Вы можете смоделировать модуль следующим образом:
import calculate from '../../calculate'
jest.mock('../xyz', ()=> () => Promise.resolve('mocked value'))
it('does something', async()=>{
const op = await calculate()
expect(op).toBe('mocked value')
})
если вам нужны отличные возвращаемые значения от вашего макета, вам нужно смоделировать модуль, чтобы он возвращал шпиона. Затем вам нужно импортировать модуль, и вы можете установить возвращаемое значение во время ваших тестов:
import calculate from '../../calculate'
import myModule from '../xyz'
jest.mock('../xyz', ()=> jest.fn())
it('does something', async() => {
myModule.mockImplementation(() => () => Promise.resolve('mocked value'))
const op = calculate()
expect(op).toBe('mocked value')
})
it('does something else', async() => {
myModule.mockImplementation(() => () => Promise.resolve('another value'))
const op = await calculate()
expect(op).toBe('another value')
})
it('does fail', async() => {
myModule.mockImplementation(() => () => Promise.reject('some Error')
try{
const op = await calculate()
}catch (e){
expect(e).toBe('some Error')
}
})