如何检查在Jasmine中是否使用真实值(不是f.e.未定义)调用了函数?

如何检查在Jasmine中是否使用真实值(不是f.e.未定义)调用了函数?,jasmine,Jasmine,在Jasmine中有函数.tohavencalledWith()和.toBeTruthy(),但是有没有办法检查函数是否使用真实值调用 据我所知,使用.toHaveBeenCalledWith()时,您必须传递一个精确的值,但我只想检查是否使用真实值(例如,不是未定义的或null)调用了函数。您可以做的是在您试图测试其参数的函数上设置一个间谍。然后通过spy获取参数,例如,let my arg=mySpy.calls.mostRecent().args[0]并执行简单的预期expect(arg)

在Jasmine中有函数.tohavencalledWith()和.toBeTruthy(),但是有没有办法检查函数是否使用真实值调用


据我所知,使用.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'上不存在。”。这里怎么了?应该是最严重的,我的错。它是一个函数而不是一个属性。