[英]How to test jest mock module
// utils.js
var someModule = require('someModule');
someModule.setKey('API_KEY');
我想测试setKey
function。所以我写了下面的单元测试用例。
jest.mock('someModule, () => {
return {
setKey: jest.fn()
}
})
describe('utils', () => {
afterEach(()=> {
jest.clearAllMocks()
})
it(`test case 1`, () => {})
it(`test case utils`, () => {
expect(someModule.setKey.mocks.calls).toHaveLength(1)
})
});
最后一个测试用例失败,但如果我将最后一个测试用例作为第一个移动,那么它就可以工作。 由于没有执行clearAllMocks
。
应该有什么好的方法来测试呢?
它应该工作。 这是一个例子:
utils.js
:
const someModule = require('someModule');
function main() {
someModule.setKey('API_KEY');
}
module.exports = main;
由于someModule
不是真正的模块,所以我使用{virtual: true}
选项。
utils.test.js
:
const main = require('./utils');
const someModule = require('someModule');
jest.mock(
'someModule',
() => {
return { setKey: jest.fn() };
},
{ virtual: true },
);
describe('60192332', () => {
afterEach(() => {
jest.clearAllMocks();
});
it('should set key', () => {
main();
expect(someModule.setKey.mock.calls).toHaveLength(1);
});
});
覆盖率为 100% 的单元测试结果:
PASS stackoverflow/60192332/utils.test.js (6.732s)
60192332
✓ should set key (5ms)
----------|---------|----------|---------|---------|-------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
----------|---------|----------|---------|---------|-------------------
All files | 100 | 100 | 100 | 100 |
utils.js | 100 | 100 | 100 | 100 |
----------|---------|----------|---------|---------|-------------------
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 8.38s, estimated 13s
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.