开玩笑嘲笑一个对象

and*_*ugh 2 javascript unit-testing jestjs

我需要模拟一个对象,config.js而不是像往常一样模拟一个函数。我有 -

//config.js . 
export default {
   foo: 'bar'
}
Run Code Online (Sandbox Code Playgroud)

我试过了 -

import config from './config';
jest.mock('./config');
config.mockReturnValue({
   foo: 'zed'
})
Run Code Online (Sandbox Code Playgroud)

还-

import config from './config';
jest.mock('./config');
config.mockImplentation(() => ({
   foo: 'zed'
}));
Run Code Online (Sandbox Code Playgroud)

但是它没有嘲笑任何东西,并且我正在正常获取配置文件。

我究竟做错了什么?

And*_*rle 6

它只是一个返回对象而不是函数的模拟

jest.mock('./config', () => ({ foo: 'zed' }))
Run Code Online (Sandbox Code Playgroud)

要么

import config from './config';
config.foo = 'zed'
Run Code Online (Sandbox Code Playgroud)

您的方法的问题在于,它仅适用于返回函数的模块


jpi*_*ncz 5

现在有一个解决方案。您可以使用:

jest.replaceProperty(config, 'foo', 'zed');
Run Code Online (Sandbox Code Playgroud)

更多信息:Jest 文档 - jest.replaceProperty