我有3个测试,每个测试各种方法。
it('test function1', function() {
spyOn(document, 'getElementById');
// ... some code to test function1
expect(document.getElementById).toHaveBeenCalled();
});
it('test function2', function() {
spyOn(document, 'getElementById');
// ... some code to test function2
expect(document.getElementById).toHaveBeenCalled();
});
it('test function3', function() {
spyOn(document, 'getElementById');
// ... some code to test function3
expect(document.getElementById).toHaveBeenCalled();
});
但是,当我运行这些测试时,出现以下错误:getElementById has already been spied upon
。有人可以解释为什么即使间谍在不同的测试套件中我也得到此错误,以及如何解决它。
答案 0 :(得分:0)
一旦窥探一个方法,就无法再次窥探它。如果您要做的只是检查每次测试中是否都调用过该方法,只需在测试开始时创建间谍,然后在afterEach
中重置调用即可:
spyOn(document, 'getElementById');
afterEach(() => {
document.getElementById.calls.reset();
});
it('test function1', function() {
// ... some code to test function1
expect(document.getElementById).toHaveBeenCalled();
});
it('test function2', function() {
// ... some code to test function2
expect(document.getElementById).toHaveBeenCalled();
});
it('test function3', function() {
// ... some code to test function3
expect(document.getElementById).toHaveBeenCalled();
});