简体   繁体   English

如何重置 Jasmine 间谍 object?

[英]How to reset Jasmine Spy object?

Not able to find docs for resetting the Jasmine Spy object.找不到用于重置 Jasmine 间谍 object 的文档。 If there is better way of using spy objects, please suggest.如果有更好的使用间谍对象的方法,请提出建议。

// 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);
  });
});

It should work as expected.它应该按预期工作。

Eg例如

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);
  });
});

unit test results:单元测试结果:

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 |                   
---------------|---------|----------|---------|---------|-------------------

Incorrect way: spyObj.calls.reset()不正确的方式: spyObj.calls.reset()

Correct way: spyObj.spyMethod.calls.reset()正确方法: spyObj.spyMethod.calls.reset()

NOTE : calls.reset() is done for spy methods and not for spy object.注意calls.reset()是针对间谍方法完成的,而不是针对间谍 object。

Jasmine reset() docs Jasmine 重置()文档

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM