Я пытаюсь написать тест, используя утилиты vuex test.Я настроил тест следующим образом:
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 и удалил набранное def из testValue.и тест проходит нормально.