2

The following api had been already implemented and I need to write test classes for it. From the examples I went through, I could see that the methods typically have a return object whereas the following has a void return type.

I don't know how to do the assertions.

@RestResource(urlMapping='/v1/application/*')
global with sharing class ApplicationAPI {


    @HttpGet
    global static void get() {
        RestRequest req = RestContext.request;
        RestResponse res = RestContext.response;
        try {
            String path = RestUtil.getPathParam(req, 'application/');
              //do something
              res.responseBody = setSomething;
        } 
        catch(BadRequestException e) {
            res.statusCode = e.getStatusCode();
            RestUtil.setResErrorBody(res, e.getErrorCode(), e.getMessage());
        }
    }
}

The test code I'm attempting:

    @isTest static void testGetApplications(){
        //init(); create records
        Test.startTest();
        RestRequest req = new RestRequest(); 
        RestResponse res = new RestResponse();

        req.requestURI = '/v1/application';  
        req.httpMethod = 'GET';  
        RestContext.request = req;
        RestContext.response = res;

        ApplicationAPI.get();
        //what should be returned? or Asserted?
    }

1 Answer 1

3

You would check res depending on what you expected back. Your "return value" just happens to be in a static variable, rather than being returned to a local variable.

// examples //
System.assertEquals(res.responseBody, expectedResponse);
System.assertEquals(res.statusCode, 200);

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .