myService
从 myService.js
文件。 myService.spec.js
在同一个文件夹中。myService.myMethod()
使用助手 myHelper()
从 helpers.js
文件。有没有可能以某种方式模拟这个 myHelper()
?
|
-- myService.js
-- myService.spec.js
-- myHelper.js
myService.js
:
import { myHelper } from './myHelper.js';
export class MyService {
myMethod() {
const myVar = myHelper(42); // I need to mock this
}
}
myService.spec.js
:
import { MyService } from './myService';
describe('my test', () => {
it('should work properly', () => {
expect(myService.myMethod()).toBe(24);
});
});
你可以使用 jest.mock(moduleName, factory, options) 嘲讽 myHelper
模块和 myHelper
功能。
例如myService.js
:
import { myHelper } from './myHelper';
export class MyService {
myMethod() {
const myVar = myHelper(42);
return myVar;
}
}
myHelper.js
:
export function myHelper(n) {
return n;
}
myService.test.js
:
import { MyService } from './myService';
import { myHelper } from './myHelper';
jest.mock('./myHelper', () => {
return {
myHelper: jest.fn(),
};
});
describe('my test', () => {
it('should work properly', () => {
myHelper.mockReturnValueOnce(24);
const myService = new MyService();
expect(myService.myMethod()).toBe(24);
});
});
100%覆盖率的单元测试结果。
PASS stackoverflow/61370607/myService.test.js (13.137s)
my test
✓ should work properly (3ms)
--------------|---------|----------|---------|---------|-------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
--------------|---------|----------|---------|---------|-------------------
All files | 100 | 100 | 100 | 100 |
myService.js | 100 | 100 | 100 | 100 |
--------------|---------|----------|---------|---------|-------------------
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 15.028s
源代码。https:/github.commrdulinreact-apollo-graphql-starter-kittreemasterstackoverflow61370607。