How can I test this method? I try the test code from trailhead but can't make any coverage.
Callout:
public class Token{
public String accessToken{get;set;}
}
public static HttpResponse postCallout(String TypeID) {
//test record:
Type__c typ = [SELECT Id, Name FROM Type__c WHERE Id =: TypeID];
Http ourHttp = new Http();
//Here are my consumer key, consumer secret, username, password and request:
String requestBody = getAccess();
HttpRequest req = new HttpRequest();
req.setBody(requestBody);
req.setMethod('POST');
req.setEndpoint('https://p21.lightning.force.com/services/oauth2/token');
HttpResponse response = ourHttp.send(req);
Token authentication = (Token)JSON.deserialize(response.getbody(), Token.class);
if(objAuthenticationInfo.accessToken != null){
HttpRequest req2 = new HttpRequest();
req2.setHeader('Authorization','Bearer ' + authentication.accessToken);
req2.setHeader('Content-Type','application/json');
req2.setHeader('accept','application/json');
req2.setMethod('POST');
req2.setEndpoint('https://p21.lightning.force.com/services/apexrest/types/');
req2.setBody(GenerateJSON(typ));
response = ourHttp.send(req2);
if(response .getStatusCode() == 200) {
System.debug(response .getBody());
return response ;
}else {
return null;
}
}
return null;
}
}
Mock:
@isTest
global class mock implements HttpCalloutMock {
// Implement this interface method
global HTTPResponse respond(HTTPRequest request) {
// Create a fake response
HttpResponse response = new HttpResponse();
response.setHeader('Content-Type', 'application/json');
response.setBody('{"Name":"type"}');
response.setStatusCode(200);
return response;
}
}
Test:
@isTest static void testPostCallout() {
Test.setMock(HttpCalloutMock.class, new mock());
HttpResponse response = Classs.postCallout('a0A1r00005vIrVVN23');
String contentType = response.getHeader('Content-Type');
System.assert(contentType == 'application/json');
String actualValue = response.getBody();
System.debug(response.getBody());
String expectedValue = '{"Name": "type"}';
System.assertEquals(actualValue, expectedValue);
System.assertEquals(200, response.getStatusCode());
}
Error:
System.QueryException: List has no rows for assignment to SObject
AnimalsHttpCalloutMock
class.