💬
[Salesforce] Apex RESTを単体テストする
単体テスト - Unit Test
Sandbox環境でApexでREST APIを実装しても単体テストを書いておかないと本番に持っていけないですよね。
テスト対象のコントローラーの実装は省略します。
SampleControllerに@HttpPostのアノテーションがついているdoPostというSampleCustomObject__cのStatus__cが更新される処理を実装しているとしましょう。
するとテストは以下のようになります。
@isTest
public class TestSampleController {
private static SampleCustomObject__c createSample() {
SampleCustomObject__c sample = new SampleCustomObject__c();
sample.FirstName__c = 'Taro';
sample.LastName__c = 'Test';
sample.Status__c = 'Init';
insert sample;
return sample;
}
@isTest static void testPostOK() {
SampleCustomObject__c sample = createSample();
// Set up test request
RestRequest request = new RestRequest();
request.httpMethod = 'POST';
RestContext.request = request;
Map < String, String > body = new Map < String, String > ();
body.put('Id', sample.Id);
RestContext.request.requestBody = Blob.valueOf(JSON.serialize(body));
// Call the method to test
SampleCustomObject__c res = SampleController.doPost();
// Verify results
System.assertEquals('Processed', res.Status__c);
}
}
Discussion