【发布时间】:2019-01-30 04:42:21
【问题描述】:
(基于已经here提供的示例。) 对于下面的模块,
// fruit.js
export const apple = 'apple';
export const strawberry = () => 'strawberry';
export default () => `banana and ${strawberry()} `;
我想编写一个测试来验证 default 导出的函数是否正确调用函数 strawberry。 为此,我尝试了以下测试,
// partial_mock.js
import defaultExport, { strawberry } from '../fruit';
jest.mock('../fruit', () => {
const originalModule = require.requireActual('../fruit');
const mockedModule = jest.genMockFromModule('../fruit');
// Mock the exported 'strawberry' function.
return Object.assign({}, mockedModule, originalModule, {
strawberry: jest.fn(() => 'mocked strawberry'),
});
});
it('does a partial mock', () => {
expect(strawberry()).toBe('mocked strawberry');
const defaultExportResult = defaultExport();
expect(defaultExportResult).toBe('banana and mocked strawberry');
});
然而,模拟函数没有被调用,而是实际的函数被调用。
× does a partial mock (21ms)
● does a partial mock
expect(received).toBe(expected) // Object.is equality
Expected: "banana and mocked strawberry"
Received: "banana and strawberry "
这是预期的吗?
我的测试有效吗?我在测试中遗漏了什么吗?
【问题讨论】:
标签: jestjs