Hello,
In "Apex Web Services" challenge of "Apex Integration Services, while I Test Run, its failing because of "Attempt to de-reference a null object" error (attached error image).
Could anyone please let me know where I am wrong.
AccountManager Class:
@RestResource(urlMapping='/Accts/*/contacts')
global with sharing class AccountManager {
@HttpGet
global static Account getAccount() {
RestRequest request = RestContext.request;
String accountId = request.requestURI.substringBetween('Accts/','/contacts');
Account result = [SELECT Id, Name, (SELECT ID, FirstName, LastName FROM Contacts)
FROM Account
WHERE Id= :accountId];
return result;
}
}
AccountManagerTest Class:
@isTEst
private class AccountManagerTest {
@isTest
static void testGetAccount(){
Account a = new Account(Name='TestAccountManager');
insert a;
Contact c = new Contact(AccountId = a.Id, FirstName = 'TestFName', LastName = 'TestLName');
insert c;
RestRequest request = RestContext.request;
request.requestURI = 'https://yourInstance.my.salesforce.com/services/apexrest/Accts/'+ a.Id +'/contacts';
request.httpMethod = 'GET';
RestContext.request = request;
Account myAcct = AccountManager.getAccount();
System.assert(myAcct != null);
System.assertEquals('TestAccountManager', myAcct.Name);
}
}
Hello @Videen Nandankar
Please try this once :
AccountManager Class : @RestResource(urlMapping='/Accounts/*/contacts') global with sharing class AccountManager { @HttpGet global static Account getAccount() { RestRequest request = RestContext.request; // grab the caseId from the end of the URL String accountId = request.requestURI.substringBetween('Accounts/','/contacts'); Account result = [SELECT Id,Name,(Select Id , Name From Contacts) FROM Account WHERE Id = :accountId]; return result; } }
AccountManagerTest Class : @IsTest private class AccountManagerTest { @isTest static void testGetContactsByAccountId() { Id recordId = createTestRecord(); // Set up a test request RestRequest request = new RestRequest(); request.requestUri = 'https://yourInstance.salesforce.com/services/apexrest/Accounts/' +recordId+'/contacts'; request.httpMethod = 'GET'; RestContext.request = request; // Call the method to test Account thisAccount = AccountManager.getAccount(); // Verify results System.assert(thisAccount != null); System.assertEquals('Test record', thisAccount.Name); } // Helper method static Id createTestRecord() { // Create test record Account accountTest = new Account( Name='Test record'); insert accountTest; Contact contactTest= new Contact( FirstName='John', LastName='Doe', AccountId=accountTest.Id); insert contactTest; return accountTest.Id; } }
I hope this will help.