(На основании примеров, любезно предоставленных уже здесь .) Для модуля ниже,
// fruit.js
export const apple = 'apple';
export const strawberry = () => 'strawberry';
export default () => `banana and ${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 "
Ожидается ли это?
Мой тест действителен?Я что-то пропустил в своем тесте?