2016-12-05 72 views
0

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

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

为了测试它,这是什么我做:

controller.lookup(); 

大多数时候,它只是在执行这条线

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

,而不是执行.then(..)承诺。我猜,在一些运行期间,我得到了jquery“get”请求的响应,因此,“then”承诺被执行,但是有没有办法等到收到“get”响应或伪造的响应? (使用兴农间谍尝试,但至今没有运气)

感谢您的帮助!

回答

0

的推荐方法是嘲笑/间谍的API调用。你可以做这样的事情,

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

这里工作example

而不是使用手动回调,你可以使用的承诺。

+0

谢谢,这为我工作。 – angTest9