gpt4 book ai didi

javascript - 如何更改模拟导入的行为?

转载 作者:行者123 更新时间:2023-12-03 10:33:51 24 4
gpt4 key购买 nike

我对在 Jest 中模拟如何对实现进行单元测试感到很困惑。问题是我想模拟不同的预期行为。

有什么办法可以做到这一点?因为导入只能在文件的顶部并且能够模拟某些东西,所以必须在导入之前声明它。我还尝试传递一个本地函数,以便我可以覆盖该行为,但开 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

最佳答案

您可以使用 spy 模拟并导入模拟模块。在您的测试中,您使用 mockImplementation 设置模拟的行为方式。 :

jest.mock('the-package-to-mock', () => ({
methodToMock: jest.fn()
}));
import { methodToMock } from 'the-package-to-mock'

it('test1', () => {
methodToMock.mockImplementation(() => 'someValue')
})

it('test2', () => {
methodToMock.mockImplementation(() => 'anotherValue')
})

关于javascript - 如何更改模拟导入的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45006254/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com