小编Sai*_*nan的帖子

返回承诺的茉莉花测试函数

我有以下功能实现

function getRepo(url) {
    var repos = {};

    if (repos.hasOwnProperty(url)) {
        return repos[url];
    }

    return $.get(url)
        .then(repoRetrieved)
        .fail(failureHandler);

    function repoRetrieved(data) {

        return repos[url] = data;
    }

    function failureHandler(err, xhr) {
        throw new Error(xhr.responseText);
    }
}
Run Code Online (Sandbox Code Playgroud)

我写了以下测试:

describe('"getRepo" method', function() {
    var getDeffered;
    var $;

     beforeEach(function() {
         getDeffered = Q.defer();
         $ = jasmine.createSpyObj('$', ['get']);
         $.get.and.returnValue(getDeffered.promise);
     });

     it('should return a promise', function(){
         expect(getRepo('someURL')).toEqual(getDeffered.promise);
     });

});
Run Code Online (Sandbox Code Playgroud)

而这个测试失败了。我想是因为我调用了 then 方法。

如果函数实现是:

function getRepo(url) {
    return $.get(url);
}
Run Code Online (Sandbox Code Playgroud)

这是 jasmine 在使用 Q.defer() 时抛出的消息

Expected { …
Run Code Online (Sandbox Code Playgroud)

javascript tdd unit-testing promise jasmine

5
推荐指数
1
解决办法
8019
查看次数

标签 统计

jasmine ×1

javascript ×1

promise ×1

tdd ×1

unit-testing ×1