SmartestVEGA SmartestVEGA - 5 months ago 21
Ajax Question

Unit Test are not failing

I am trying to write unit test cases, for web API call.

Which shows success below :

Success Unit Test (jsfiddle)

getProduct("jsonp","https://maps.googleapis.com/maps/api/e


Error Unit Test (jsfiddle) But still its shows "pass"

getProduct("jsonp","https://sdfsdfdfmaps.googleapis.com/maps/api/e


Previous right webapi url : https://maps.googleapis.com/maps/api/elevation/json?locations=39.7391536,-104.9847034&key

Wrong wepapi url : https://sdfsdfdfmaps.googleapis.com/maps/api/elevation/json?locations=39.7391536,-104.9847034&key

Even though the wepapi url is wrong. Test is passing.

Answer Source

Remove the spy function and add a fail callback which raises an error if the ajax call failed like so:

function getProduct(dataType,serviceURL,langCode ,callback) {
    $.ajax({
        type: 'GET',
        dataType: dataType,
        url: serviceURL + langCode,
        success: callback,
        fail: () => { throw new Error( 'failed' ); },
    });
}

See this fiddle here.

But this causes an actual call. To prevent the call from happening, use your spy function and parse the URL argument like in this fiddle here.