如何模拟测试函数中常量的值



我在测试中遇到了嘲笑常量的问题。我有一个带有应用程序配置的文件。只有具有某些值的键,仅此而已。

appConfig.js

//imports
...
export const CASHING_AMOUNT_LIMIT = 50;
export const CASHING_DELETE_AMOUNT = 25;
...

这就是我要测试的减速器:

减速器.js

import {
CASHING_AMOUNT_LIMIT,
CASHING_DELETE_AMOUNT,
} from '../appConfig';
...
export const reducer = handleActions({
[REQUEST_DATA]: (state, action) => {
if (payload.count >= CASHING_AMOUNT_LIMIT) {
// do something with data if the condition is true
}
return {
...someState,
};
},
...

在我的测试中,我想更改CASHING_AMOUNT_LIMIT的值,并检查reducer是否返回当前存储。我不知道如何在reducer.js中模拟这个变量。这是我的测试:

...//imports
const mockValues = {
CASHING_AMOUNT_LIMIT: 10,
CASHING_DELETE_AMOUNT: 5,
};
jest.mock('../../appConfig.js', () => mockValues);
const {
CASHING_AMOUNT_LIMIT,
CASHING_DELETE_AMOUNT,
} = require('../../appConfig.js');
...
it('MY awesome test ', () => {
expect(CASHING_AMOUNT_LIMIT).toBe(10);
expect(CASHING_DELETE_AMOUNT).toBe(5); 

// HERE is all ok CASHING_AMOUNT_LIMIT = 10 and the second variable is 5 
//  tests are OK
// ....

expect(storeWithCache.dispatch(requestFunction({ test: 'XX'})))
.toEqual(myStore);
...

最后,我使用dispatch,它在reducer.js中调用我的reducer操作和函数,它运行正常……但对于CASHING_AMOUNT_LIMIT的旧值,它仍然是50(如在appConfig.js中),我需要设置10

有人能帮我在reducer.js中嘲笑CASHING_AMOUNT_LIMIT吗?

本部分

jest.mock('../../appConfig.js', () => mockValues);

需要在描述块之外,在导入下。

我有一个解决方案,我们在一个文件testenv.js中有所有mock,它正在全局导入,我把jest.mock('../../appConfig.js')放在那里,它就工作了!

相关内容

  • 没有找到相关文章

最新更新