我正在尝试使用vuex test utils编写测试。我已经这样设置了测试:
myModule.ts
export const mutations = {
[TYPES.SET_VALUE1](state: myModuleState, payload: TYPE1) {
//...
},
[TYPES.SET_VALUE2](state: myModuleState: payload: TYPE2) {
//...
},
[TYPES.SET_VALUE3](state: myModuleState, payload: TYPE3) {
//...
},
[TYPES.SET_VALUE4](state: myModuleState, payload: TYPE4) {
//...
}
};
myModule.spec.ts
import chai from 'chai';
import { expect } from 'chai';
import { mutations, myModule } from '@/store/modules/myModule';
import TYPES from '@/store/mutation-types';
const testValue:TYPE1 = {
name: 123
};
describe('mutations', () => {
it('TYPE1', () => {
// mock state
const state = {};
// apply mutation
mutations[TYPES.SET_VALUE1](state, testValue);
// assert result
expect(state).to.deep.equal(testValue);
});
});
当我运行时,出现以下错误:
TS2345: Argument of type 'TYPE1' is not assignable to parameter of type 'TYPE1 & TYPE2 & TYPE3 & TYPE4'.
Type 'TYPE1' is not assignable to type 'TYPE2'.
似乎期望参数的类型同时为所有类型?当我更改参数的类型(例如,从TYPE1更改为TYPE2)时,错误更改为Type 'TYPE2' is not assignable to type 'TYPE1'
。我在做什么错了?
编辑:我将 myModule.spec.ts 更改为 myModule.spec.js ,并删除了对testValue的键入定义。测试通过就可以了。