如何检查在Jasmine中是否使用真实值(不是f.e.未定义)调用了函数?
在Jasmine中有函数.tohavencalledWith()和.toBeTruthy(),但是有没有办法检查函数是否使用真实值调用如何检查在Jasmine中是否使用真实值(不是f.e.未定义)调用了函数?,jasmine,Jasmine,在Jasmine中有函数.tohavencalledWith()和.toBeTruthy(),但是有没有办法检查函数是否使用真实值调用 据我所知,使用.toHaveBeenCalledWith()时,您必须传递一个精确的值,但我只想检查是否使用真实值(例如,不是未定义的或null)调用了函数。您可以做的是在您试图测试其参数的函数上设置一个间谍。然后通过spy获取参数,例如,let my arg=mySpy.calls.mostRecent().args[0]并执行简单的预期expect(arg)
据我所知,使用.toHaveBeenCalledWith()时,您必须传递一个精确的值,但我只想检查是否使用真实值(例如,不是未定义的或null)调用了函数。您可以做的是在您试图测试其参数的函数上设置一个间谍。然后通过spy获取参数,例如,
let my arg=mySpy.calls.mostRecent().args[0]代码>并执行简单的预期expect(arg).toBeTruthy()
伪代码段:
let mySpy = spyOn(myComponent, 'myFunctionToSpyOn').and.callThrough();
// do something that triggers the function call
let arg = mySpy.calls.mostRecent().args[0];
expect(arg).toBeTruthy();
这样做会导致错误:“[ts]属性'args'在类型'()=>CallInfo'上不存在。”。这里怎么了?应该是最严重的,我的错。它是一个函数而不是一个属性。