Есть несколько способов проверить это.
Способ, которым вы пытаетесь, работает нормально, вам просто нужно изменить его на:
test('code', () => {
const alertMock = jest.fn();
require('src/dclient').default.alert = alertMock; // <= mock alert on 'default'
require('./code'); // <= require the code that calls DClient.alert('hello')
expect(alertMock).toHaveBeenCalledWith('hello'); // Success!
})
... потому что src/dclient
- это модуль ES6 с default
экспортом.
Подход, который я, вероятно, использовал бы, состоит в том, чтобы смоделировать функцию alert
в классе DataClient
:
import DataClient from 'src/clients/data';
test('code', () => {
const alertSpy = jest.spyOn(DataClient.prototype, 'alert');
alertSpy.mockImplementation(() => {});
require('./code'); // <= require the code that calls DClient.alert('hello')
expect(alertSpy).toHaveBeenCalledWith('hello'); // Success!
})