在 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,而不是使用手动回调。
我正在尝试测试以下组件的控制器查找功能:
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,而不是使用手动回调。