具有TypeScript的Vuex测试实用程序:类型“ TYPE1”的参数无法分配给类型“ TYPE1&TYPE2&TYPE3&TYPE4”的参数

时间:2019-06-27 19:00:53

标签: typescript vue.js vuex chai vue-test-utils

我正在尝试使用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的键入定义。测试通过就可以了。

0 个答案:

没有答案