Jestjs 当从不同对象调用方法时,jest spyOn toHaveBeenCalled失败
我试图检查回调,但JEST没有注意到它被调用 非常简单的情况下,我钻下来。调用类N的方法对象将调用类d的回调对象d。这种情况发生了-我确实看到了输出,但Jest没有识别它 也就是说,我希望选项1和选项2都能通过测试,但实际上只有选项2成功。似乎Jest可能正在检查被调用的名称,尽管上面的文档显示 注意:默认情况下,jest.spyOn还调用spied方法 所需更改:Jestjs 当从不同对象调用方法时,jest spyOn toHaveBeenCalled失败,jestjs,Jestjs,我试图检查回调,但JEST没有注意到它被调用 非常简单的情况下,我钻下来。调用类N的方法对象将调用类d的回调对象d。这种情况发生了-我确实看到了输出,但Jest没有识别它 也就是说,我希望选项1和选项2都能通过测试,但实际上只有选项2成功。似乎Jest可能正在检查被调用的名称,尽管上面的文档显示 注意:默认情况下,jest.spyOn还调用spied方法 所需更改: 监视D.prototype而不是D 在分配回调之前添加spy,即c.callback=d.callback D类{ 回拨(i
- 监视
而不是D.prototype
D
- 在分配回调之前添加spy,即
c.callback=d.callback
D类{
回拨(id){
console.log(“用“+id”调用);
}
}
N类{
构造函数(){
this.callback=未定义;
}
被叫人(身份证){
这个.回调(id);
}
}
var c=新的N();
var d=新的d();
const spy=jest.spyOn(D.prototype,“回调”);
c、 callback=d.callback;
c、 卡勒姆(“垃圾”);
d、 回调(“垃圾”);
预期(间谍)。被催促的时间(2);
更新:
对于本例,您甚至可以执行constspy=jest.spyOn(d,“回调”)代码>但这仅适用于类的该实例。需要更改:
- 监视
D.prototype
而不是D
- 在分配回调之前添加spy,即
c.callback=d.callback
D类{
回拨(id){
console.log(“用“+id”调用);
}
}
N类{
构造函数(){
this.callback=未定义;
}
被叫人(身份证){
这个.回调(id);
}
}
var c=新的N();
var d=新的d();
const spy=jest.spyOn(D.prototype,“回调”);
c、 callback=d.callback;
c、 卡勒姆(“垃圾”);
d、 回调(“垃圾”);
预期(间谍)。被催促的时间(2);
更新:
对于本例,您甚至可以执行constspy=jest.spyOn(d,“回调”)代码>但这仅适用于该类实例。谢谢。我意识到间谍是在类而不是实例上。还有一种方法可以检查对特定实例而不是对任何实例的调用吗?constspy=jest.spyOn(c,“callback”)代码>为我工作。如果您执行constspy=jest.spyOn(d,'callback')代码>然后调用两次,因为我们分配给c.Callback谢谢。我意识到间谍是在类而不是实例上。还有一种方法可以检查对特定实例而不是对任何实例的调用吗?constspy=jest.spyOn(c,“callback”)代码>为我工作。如果您执行constspy=jest.spyOn(d,'callback')代码>然后调用两次,因为我们分配给c.callback
class D{
callback(id){
console.log("called with "+id);
}
}
class N{
constructor(){
this.callback = undefined;
}
callEm(id){
this.callback(id);
}
}
var c = new N();
var d = new D();
c.callback = d.callback;
const spy = jest.spyOn(d, "callback");
c.callEm("crap"); // Option1: leads to test failure but shows print out
//d.callback("crap");// Option2: leads to test success and shows print out
expect(spy).toHaveBeenCalledTimes(1);