我有react模块,它从实用程序中调用函数。我正在测试组件和模拟实用函数,但不知何故我没有得到它的行覆盖率。我模拟了实用函数以使测试出错,但它仍然通过,这让我怀疑是否有什么可疑之处。
有关于如何模拟实用函数的提示或指南吗?
//Utils.js
export const add = () => {
return x;
}add函数在模块App中使用。我想测试App,但mock没有返回我期望它返回的内容。
//Mocking as below
jest.mock('../utils', () => ({
...jest.requireActual('../utils'),
add:() => 4
}));发布于 2019-12-06 17:36:22
您可以使用jest.spyOn为utils.add方法创建存根。
例如。
App.js
import * as utils from './Utils';
export function bootstrap() {
return utils.add();
}Utils.js
export const add = () => {
const x = 1;
return x;
};App.test.js
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%覆盖率的单元测试结果:
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
https://stackoverflow.com/questions/59208419
复制相似问题