首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用jest获取模拟实用函数

如何使用jest获取模拟实用函数
EN

Stack Overflow用户
提问于 2019-12-06 15:05:26
回答 1查看 4.2K关注 0票数 1

我有react模块,它从实用程序中调用函数。我正在测试组件和模拟实用函数,但不知何故我没有得到它的行覆盖率。我模拟了实用函数以使测试出错,但它仍然通过,这让我怀疑是否有什么可疑之处。

有关于如何模拟实用函数的提示或指南吗?

代码语言:javascript
复制
//Utils.js
export const add = () => {
    return x;
}

add函数在模块App中使用。我想测试App,但mock没有返回我期望它返回的内容。

代码语言:javascript
复制
//Mocking as below
jest.mock('../utils', () => ({
    ...jest.requireActual('../utils'),
    add:() => 4
}));
EN

回答 1

Stack Overflow用户

发布于 2019-12-06 17:36:22

您可以使用jest.spyOnutils.add方法创建存根。

例如。

App.js

代码语言:javascript
复制
import * as utils from './Utils';

export function bootstrap() {
  return utils.add();
}

Utils.js

代码语言:javascript
复制
export const add = () => {
  const x = 1;
  return x;
};

App.test.js

代码语言:javascript
复制
import { bootstrap } from './App';
import * as utils from './Utils';

describe('bootstrap', () => {
  it('should mock utils.add method correctly', () => {
    const addStub = jest.spyOn(utils, 'add').mockReturnValueOnce(2);
    const actual = bootstrap();
    expect(actual).toBe(2);
    expect(addStub).toBeCalledTimes(1);
    addStub.mockRestore();
  });

  it('should pass', () => {
    expect(utils.add()).toBe(1);
  });
});

100%覆盖率的单元测试结果:

代码语言:javascript
复制
 PASS  src/stackoverflow/59208419/App.test.js (7.993s)
  bootstrap
    ✓ should mock utils.add method correctly (5ms)
    ✓ should pass (1ms)

----------|----------|----------|----------|----------|-------------------|
File      |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
----------|----------|----------|----------|----------|-------------------|
All files |      100 |      100 |      100 |      100 |                   |
 App.js   |      100 |      100 |      100 |      100 |                   |
 Utils.js |      100 |      100 |      100 |      100 |                   |
----------|----------|----------|----------|----------|-------------------|
Test Suites: 1 passed, 1 total
Tests:       2 passed, 2 total
Snapshots:   0 total
Time:        9.072s

源代码:https://github.com/mrdulin/jest-codelab/tree/master/src/stackoverflow/59208419

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59208419

复制
相关文章

相似问题

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