如何重置Jasmine间谍对象



无法找到用于重置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((文档

最新更新