document.getElementById = jasmine.createSpy('HTMLElement').and.returnValue(null);
我正在创建一个间谍,以使document.getElementById
返回我的测试中的必需元素。由于文档是全球文档,因此该间谍遍布于规范文件中。测试执行后,是否可以删除该间谍并将getElementById
还原为原始实现?
注意:我使用的是Jasmine和Karma的新版本,它会随机执行单元测试(需要执行随机测试)。我需要在多个规格文件中监视getElementById。如果我在其中一个测试中将返回值设置为null,那么即使在其他测试中将返回值重置为返回有效的dom元素后,由于Karma的新随机功能,在其他测试中它仍然也返回null。
答案 0 :(得分:0)
是的,但是您将需要使用其他方法来监视document.getElementById
。
茉莉花会自动删除使用spyOn()
(source)之类的方法创建的间谍。
所以只需将代码更改为:
spyOn(document, 'getElementById').and.returnValue(null);
,一旦测试完成,它将自动删除间谍。
答案 1 :(得分:0)
重置单个间谍呼叫
spyOn(object, 'method');
expect(object.method).toHaveBeenCalled();
object.method.calls.reset();
重置所有间谍电话
如果您想重置所有间谍电话,请使用:
spy.calls.reset()