gpt4 book ai didi

javascript - 如何使用 Jasmine 在 setTimeout 中测试 spy ?

转载 作者:行者123 更新时间:2023-11-29 21:24:38 26 4
gpt4 key购买 nike

我有这样的代码:

it('should call json-rpc', function() {
var spy = spyOn(object, 'echo');
if (spy.andCallThrough) {
spy.andCallThrough();
} else {
spy.and.callThrough();
}
enter(term, 'echo foo bar');
setTimeout(function() {
// here I've got error Expected a spy, but got Function.
expect(object.echo).toHaveBeenCalledWith('foo', 'bar');
term.destroy().remove();
}, 200);
});

我得到错误提示 object.echo 不是 spy 而是函数,我如何检查函数是否在 setTimeout 中被调用?

编辑:我试过使用这个:

if (jasmine.Clock) {
jasmine.Clock.useMock();
} else {
jasmine.clock().install();
}

if (jasmine.Clock) {
jasmine.Clock.tick(200);
} else {
jasmine.clock().tick(200);
}
expect(object.echo).toHaveBeenCalledWith('foo', 'bar');

但这也行不通。我有错误

Expected spy echo to have been called with [ 'foo', 'bar' ] but it was never called.  

最佳答案

期望应该放在 spy 的本地 JavaScript 局部变量实例上。所以在你的情况下你应该使用:

expect(spy).toHaveBeenCalledWith

关于javascript - 如何使用 Jasmine 在 setTimeout 中测试 spy ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37793286/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com