【发布时间】:2023-03-06 23:52:01
【问题描述】:
在我的实际代码中,我有一个 forEach 循环,如下所示:
function toTest(myObj) {
Object.keys(myObj).forEach((key) => {
doSomething(x, y, [{key, t}]);
}
}
在测试文件中,我有beforeEach:
myObj = {prop1, prop2}; 和 doSomething = jasmine.createSpy("doSomething");
然后在it:expect(doSomething).toHaveBeenCalledTimes(2);,它通过了,但是当我尝试检查调用参数时,expect(addSSINodeCb).toHaveBeenCalledWith(x, y, [prop1, t]),茉莉花射出:
预期的间谍 doSomething 已用 [ x, y, [ Object({ prop1, t}) ] ] 但实际调用是 [ x, y, [ Object({ prop1, t }) ] ], [ x, y, [ Object({ prop2, t }) ] ]。
问题是当我的函数只接受一个参数时,相同的代码在类似的情况下也能正常工作,检查两次(以任何顺序)都可以。
我也尝试检查expect(doSomething .calls.allArgs()).toEqual([ [x, y, [prop1, t]], [x, y, [prop2, t]] ]);,但实际上我发现我提供的参数顺序错误(即prop2 应该在prop1 之前,这对我来说是错误的。
有人知道吗?很抱歉混淆了代码,在我的真实代码中,t 实际上取决于密钥,但我认为这并不重要......
【问题讨论】:
标签: javascript unit-testing jasmine