【发布时间】:2023-04-09 14:16:01
【问题描述】:
我已经设法测试了与其他代码隔离的 Vuex getter。当一个 getter 依赖于其他 getter 时,我现在面临一些问题,请参见以下示例:
getters.js
export const getters = {
getFoo(state) => prefix {
return `${prefix}: ${state.name}`;
},
getFancyNames(state, getters) {
return [
getters.getFoo('foo'),
getters.getFoo('bar')
]
}
}
getters.spec.js
import { getters } = './getters';
const state = {
name: 'stackoverflow'
};
describe('getFoo', () => {
it('return name with prefix', () => {
expect(getters.getFoo(state)('name')).toBe('name: stackoverflow');
});
});
describe('getFancyNames', () => {
// mock getters
const _getters = {
getFoo: getters.getFoo(state)
}
it('returns a collection of fancy names', () => {
expect(getters.getFancyNames(state, _getters)).toEqual([
'foo: stackoverflow',
'bar: stackoverflow'
]);
});
});
当测试的 getter 依赖于具有参数的其他 getter 时,这意味着我在 mock 上引用了原始的 getter.getFoo,这打破了 mocking 的想法,因为测试开始相互关联。当 getter 增长,并且依赖图有几个级别时,它会使测试变得复杂。
也许这是要走的路,只是想检查一下我没有遗漏任何东西......
【问题讨论】:
标签: javascript unit-testing vue.js vuex jestjs