【发布时间】:2016-06-13 15:10:47
【问题描述】:
我有这样的代码:
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 不是间谍而是函数的错误,我如何检查函数是否在 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.
【问题讨论】:
-
我认为期望应该只是在您的间谍的局部变量上,您将其称为间谍:
expect(spy).toHaveBeenCalledWith。你试过吗? -
@hightempo 是的,它可以工作,您可以将其添加为答案。
标签: javascript jasmine