0
私はサードパーティのURLにhttpコールアウトを行うために将来のクラスを呼び出すトリガーを作成しましたが、ここではうまくいきますが、テストクラスは機会フィールドをカバーしていませんIsWon &閉じています。このトリガーのコードカバレッジを少なくとも75%にするには、テストクラスでどのような変更が必要ですか。将来の方法とトリガの機会に頂点トリガーのテストクラスを書く方法
// Apexトリガ
trigger oppTrigger on Opportunity (before update) {
String oppType = '';
for(Opportunity opp : Trigger.new){
if (opp.IsClosed == true){ // closed
if (opp.IsWon == true){
oppType = 'Won'; // closed-won
}else{
oppType = 'Lost'; // closed-lost
}
} else { // open
oppType = 'Open';
}
// call a method with @future annotation
futureCls.srvcCallout(opp.id,opp.Amount,oppType);
}
}
//将来のクラス私はこだわっているトリガの
global class futureCls {
@future(callout=true)
Public static void srvcCallout(String oppId, Decimal oppAmt, String oppType){
// Create http request
HttpRequest req = new HttpRequest();
req.setMethod('POST');
req.setHeader('Content-Type', 'application/json;charset=UTF-8');
req.setEndpoint('https://www.testurl.com/salesforce/opp-change'+'?id='+oppId+'&amt='+oppAmt+'&stage='+oppType);
// create web service
Http http = new Http();
try {
// Execute web service call here
HTTPResponse res = http.send(req);
// Debug messages
System.debug('RESPONSE:'+res.toString());
System.debug('STATUS:'+res.getStatus());
System.debug('STATUS_CODE:'+res.getStatusCode());
System.debug('BODY:'+res.getBody());
} catch(System.CalloutException e) {
// Exception handler
System.debug('Error connecting to Paperless..');
}
}
}
// Testクラス: -
@isTest
private class futureCls_Test {
private static testMethod void srvcCallout_Test() {
Test.startTest();
// Unit test to cover trigger update event
Opportunity opp = new Opportunity(Name='test opp', StageName='stage', Probability = 95, CloseDate=system.today());
insert opp;
opp.Amount = 1000;
opp.StageName = 'Closed/Won';
update opp;
// Assign some test values
String oppId = '1sf2sfs2';
Decimal oppAmt = 4433.43;
String oppType = 'Won';
// Unit test to cover future method
futureCls.srvcCallout(oppId, oppAmt,oppType);
// Unit test to cover http web service
Test.setMock(HttpCalloutMock.class, new futureClsCalloutMock());
Test.stopTest();
}
}
テストクラスを含めるように編集した場合は、トリガー内のif/elseステートメントで呼び出された各状態の機会作成と更新を繰り返すだけです。 – pburns1587