Jasmine,spyOn,getJSON和失败

时间:2015-10-10 22:38:50

标签: javascript unit-testing jasmine

我正在尝试学习Jasmine spyOn 功能。我得 TypeError:使用 spyOn 测试调用 jQuery.getJSON 的函数时,无法读取属性'

这是我要测试的功能:

getJsonServerNine: function () {
    'use strict';

    $.getJSON(queryServer.url, function(simpleJson) {
        parseResponse(simpleJson);                
    }).fail(function(error) {
        console.log(error.statusText);
    });

}

这是我的测试:

it("tests getJSON call", function() {
    spyOn($, 'getJSON').and.callFake(function (url, success) {
        success({
            "nine": 9
        });
    });
    queryServer.getJsonServerNine();
    expect(queryServer.queryResult).toBe(9);
});

如果我从 getJsonServerNine()中删除失败回调,那么我的代码就可以了。如果我调用 jquery.ajax()而不是 getJSON ,那么我可以找到一种方法让它工作。如何通过调用 $。getJSON

来使其工作

我已经看到了this answer类似的问题,它非常好但不能与我的情况完全匹配,对我不起作用,并使用过时的Jasmine语法。

1 个答案:

答案 0 :(得分:3)

$ .getJSON返回的对象应该有一个fail()方法。在您的实现中,它返回undefined。

伪函数应返回如下对象:

for( Client c: clientList){ 
System.out.println(c.getBuys());
}

请参阅JS小提琴 - http://jsfiddle.net/eitanp461/32e17uje/