I'm new to Salesforce and now I'm struggling with one task. I need to make test class, but I'm wondering: how do you cover the second @auraEnabled method with If statement? Here is the code:

Apex Class:

public with sharing class MyWeatherCallout {
    public static Httpresponse GetWeatherCallout(String city) {
        Http Http = new Http();
        HttpRequest request = new HttpRequest();
        request.setEndpoint('http://api.openweathermap.org/data/2.5/weather?APPID=4452fe32937db97f4ba988929a52290e&q=' + city + '&units=metric');
        HttpResponse response = Http.send(request);
        return response;

    public static String getjson(String city) {
        if (city == null || city== '') {
            id profileid = UserInfo.getProfileId();
            User User = [select city from User where profileid =: profileid];
            city = User.city;

            if (city == null || city == '') {
                Default_City__c defobj = [Select Default_City_Field__c from Default_City__c];
                city = defobj.Default_City_Field__c;

        String mystring = GetWeatherCallout(city).getBody();
        return mystring;


Test class:

private class MyWeatherTestClass {
    static void testGetCallout() {
        StaticResourceCalloutMock mock = new StaticResourceCalloutMock();
        mock.setHeader('Content-Type', 'application/json;charset=UTF-8');
        Test.setMock(HttpCalloutMock.class, new WeatherHttpCalloutMock());

        HttpResponse result = MyWeatherCallout.GetWeatherCallout();

        System.assertNotEquals(null, result,
            'The callout returned a null response.');

        System.assertEquals(200, result.getStatusCode(),
            'The status code is not 200.');

            'The content type value is not expected.');


1 Answer 1

HttpResponse result = MyWeatherCallout.GetWeatherCallout();

This is how you try to call your method. However, the method is declared as

public static Httpresponse GetWeatherCallout(String city)

The method expects a parameter of type string, but you try to call it without any parameter. As there is no method that expects no parameter, the method you seemingly try to call does not exist.

Give the call a String parameter, and it should be fine:

HttpResponse result = MyWeatherCallout.GetWeatherCallout('Oslo');

You must log in to answer this question.

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