我有一个实用程序文件,该文件通过vuex存储使用以下实现:
sentinel monitor MatserRedis redis_node 6000 3
sentinel down-after-milliseconds MatserRedis 3000
sentinel failover-timeout MatserRedis 10000
sentinel parallel-syncs MatserRedis 1
在测试中,我发现可以通过以下两种方式成功模拟// example.js
import store from '@/store';
[...]
export default function exampleUtil(value) {
const user = store.state.user.current;
[...]
}
的值:
手动模拟
user
或
模拟功能
// store/__mocks__/index.js
export default {
state: {
user: {
current: {
roles: [],
isAdmin: false,
},
},
},
};
我遇到的问题是我希望能够在两次测试之间更改// example.spec.js
jest.mock('@/store', () => ({
state: {
user: {
current: {
roles: [],
isAdmin: false,
},
},
},
}));
的值,例如将current
更改为true或为{{1}更新数组}。
使用Jest模拟实现此目的的最佳方法是什么?
答案 0 :(得分:0)
事实证明,在导入模拟文件后,可以直接在测试中更改模拟值。
使用上面的模拟函数示例:
// example.spec.js
import store from '@/store'; // <-- add this
jest.mock('@/store', () => ({
state: {
user: {
current: {
roles: [],
isAdmin: false,
},
},
},
}));
it('should do things', () => {
store.state.user.current.roles = ['example', 'another']; // <-- change mock value here
[...]
});