在 Karma(w/ Mocha) 中测试 $.get("..").then()

Testing $.get("..").then() in Karma(w/ Mocha)

我正在尝试测试以下组件的控制器查找功能:

lookup () {
    if (this.index == 1) {
        return $.get('http://www.whosebug.com').then(res => {
            this.index = res.data;
            return res;
        });
    }
}

为了测试它,这就是我正在做的:

controller.lookup();

大多数时候,它只执行这一行

if (this.find.index == 1) {
        return $.get('http://www.whosebug.com');
}

并且没有执行 .then(..) 承诺。

我想,在某些运行过程中,我收到了 jquery "get" 请求的响应,因此执行了 "then" 承诺,但是有没有办法等到收到 "get" 响应还是伪造响应? (尝试使用 sinon spy,但到目前为止运气不好)

感谢您的帮助!

推荐的方法是 mock/spy 调用 api。你可以这样做,

sinon.stub($, 'get').returns({then: function(callback) {
     callback({user: 'ABC'});
}});

这里正在工作example

您可以使用 promise,而不是使用手动回调。