无法找到用于重置Jasmine Spy对象的文档。如果有更好的方法使用间谍对象,请建议。
// spec.js
import { mockService } from "./mockService"; // mockService = jasmine.createSpyObj(...)
describe('test', () => {
beforeEach(function () {
// NOTE: Following don't work
// mockService.reset();
// mockService.calls.reset();
// mockService.method.calls.reset();
});
it('a', () => {
mockService.fn();
expect(mockService.fn).toHaveBeenCalledTimes(1);
});
it('b', () => {
mockService.fn();
expect(mockService.fn).toHaveBeenCalledTimes(1);
});
});
它应该按预期工作。
例如
const service = {
fn() {},
};
const mockService = jasmine.createSpyObj(service, 'fn');
describe('test', () => {
beforeEach(function () {
mockService.fn.calls.reset();
});
it('a', () => {
mockService.fn();
expect(mockService.fn).toHaveBeenCalledTimes(1);
});
it('b', () => {
mockService.fn();
expect(mockService.fn).toHaveBeenCalledTimes(1);
});
});
单元测试结果:
Randomized with seed 28798
Started
..
2 specs, 0 failures
Finished in 0.02 seconds
Randomized with seed 28798 (jasmine --random=true --seed=28798)
---------------|---------|----------|---------|---------|-------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
---------------|---------|----------|---------|---------|-------------------
All files | 100 | 100 | 80 | 100 |
index.spec.js | 100 | 100 | 80 | 100 |
---------------|---------|----------|---------|---------|-------------------
错误方式:spyObj.calls.reset()
正确方式:spyObj.spyMethod.calls.reset()
注意:calls.reset()
是针对间谍方法而非间谍对象执行的。
Jasmine reset((文档