Skip to main content

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);

}

}

2 respuestas
  1. 6 ene 2022, 16:07

    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.

0/9000