首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mocking jest后恢复实现

mocking jest后恢复实现
EN

Stack Overflow用户
提问于 2021-07-21 01:55:51
回答 1查看 34关注 0票数 0

我正在尝试模拟一个函数,并在测试之后将真正的实现用于其他测试。

代码语言:javascript
复制
const myService = () => {
    return {
      foo: () => return 1;
    }
}
代码语言:javascript
复制
const myService = require('./myService.js');

jest.mock('./myService');

describe('testing myService', () => {
  it('should return 2 by mocked', () => {
    myService.mockImplementation(() => ({
      foo: jest.fn().mockResolvedValueOnce(2),
    }));
    expect.assertions(1);
    expect(myService().foo()).toBe(2);
    jest.restoreAllMocks();
  });
  it('should return 1', () => {
    expect(myService().foo()).toBe(1);
  });
});

但是在这之后,foo()仍然被嘲笑。

EN

回答 1

Stack Overflow用户

发布于 2021-07-21 11:25:40

jest.spyOn(object, methodName)是为对象创建模拟方法的更好选择。

我们可以通过在afterEach()钩子中使用jest.restoreAllMocks()来将该方法恢复到原始实现。

请注意,仅当使用jest.spyOn创建模拟时,jest.restoreAllMocks()才有效;其他模拟将需要您手动恢复它们。

例如。

myService.js

代码语言:javascript
复制
const myService = () => {
  return {
    foo: () => 1,
  };
};
module.exports = myService;

myService.test.js

代码语言:javascript
复制
const myService = require('./myService.js');

describe('testing myService', () => {
  afterEach(() => {
    jest.restoreAllMocks();
  });
  it('should return 2 by mocked', () => {
    const service = myService();
    jest.spyOn(service, 'foo').mockReturnValueOnce(2);
    expect(service.foo()).toBe(2);
    expect(service.foo).toBeCalledTimes(1);
  });
  it('should return 1', () => {
    const service = myService();
    expect(jest.isMockFunction(service.foo)).toBeFalsy();
    expect(service.foo()).toBe(1);
  });
});

测试结果:

代码语言:javascript
复制
 PASS  examples/68459394/myService.test.js (8.465 s)
  testing myService
    ✓ should return 2 by mocked (3 ms)
    ✓ should return 1

Test Suites: 1 passed, 1 total
Tests:       2 passed, 2 total
Snapshots:   0 total
Time:        9.548 s
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68459394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档