我对 Jest 中的模拟以及如何对实现进行单元测试感到很困惑。问题是我想模拟不同的预期行为。
有什么办法可以做到这一点?因为导入只能在文件的顶部并且能够模拟它必须在导入之前声明的东西。我还尝试传递一个本地函数,这样我就可以覆盖该行为,但开玩笑地抱怨您不允许传递任何本地函数。
jest.mock('the-package-to-mock', () => ({
methodToMock: jest.fn(() => console.log('Hello'))
}));
import * as theThingToTest from '../../../app/actions/toTest'
import * as types from '../../../app/actions/types'
it('test1', () => {
expect(theThingToTest.someAction().type).toBe(types.SOME_TYPE)
})
it('test2', () => {
//the-package-to-mock.methodToMock should behave like something else
expect(theThingToTest.someAction().type).toBe(types.SOME_TYPE)
})
在内部你可以想象 theThingToTest.someAction()
使用 the-package-to-mock.methodToMock
原文由 Kanekotic 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用间谍进行模拟并导入模拟模块。在您的测试中,您使用
mockImplementation
设置模拟的行为方式: