Javascript 开玩笑地嘲弄一个重要人物
我有以下测试:Javascript 开玩笑地嘲弄一个重要人物,javascript,jestjs,Javascript,Jestjs,我有以下测试: const mockedObject = { mockedMethod: jest.fn((someKey, someValue) => { return {someKey: 'someValue'} }) }; jest.doMock('../myObject', () => { return mockedObject; }); testedObject.testedMethod(); expect(mockedObje
const mockedObject = {
mockedMethod: jest.fn((someKey, someValue) => {
return {someKey: 'someValue'}
})
};
jest.doMock('../myObject', () => {
return mockedObject;
});
testedObject.testedMethod();
expect(mockedObject.mockedMethod).toHaveBeenCalled();
这里,在testedObject
中,我正在导入myObject
。我想模拟该导入并传递mockedObject,而不是
在查看和之后,我认为上面的代码应该很好,但是mockedObject.mockedMethod
从未被调用,即使testedbject
正在进行调用
那么,在这个测试中进行模拟有什么问题吗?您调用
testedObject.testedMethod()
但是期待
mockedObject.mockedMethod)
请尝试以下代码:
const mockedObject = {
testedMethod: jest.fn((someKey, someValue) => {
return {someKey: 'someValue'}
})
};
jest.doMock('../myObject', () => {
return mockedObject;
});
testedObject.testedMethod();
expect(mockedObject.testedMethod).toHaveBeenCalled();
我能想出一些选择
可能发生的一件事是,在您的测试对象需要导入之后,您正在模拟导入,并且您无法修改它。如果这是您的情况,那么请确保仅在修改包之后才创建对象的实例
另一个选项是创建一个文件夹mocks,创建一个名为.js的文件,就像您的模块或导入一样,然后返回您需要的任何内容。这最适用于全局依赖项
最后,您还可以做的是使您的测试对象接收作为参数的依赖关系,以便您可以覆盖文件内的导入
希望能有帮助