Я хотел бы протестировать действия Vuex с помощью Jest. Я использую vuex-module-decorators для создания хранилища Vuex в стиле класса. Мой магазин, как показано ниже.
import { Action, Module, Mutation, VuexModule } from "vuex-module-decorators";
@Module({ name: "counter", namespaced: true })
export class Counter extends VuexModule {
private count: number = 0;
@Mutation
public increment(): void {
this.count++;
}
get getCount() {
return this.count;
}
@Action({})
public add2(): void {
this.increment();
this.increment();
}
}
Мой тестовый код приведен ниже. мутационный тест и геттерный тест работают. Но я не знаю, как проверить действие. Я не могу правильно выполнить действие add2. Кто-нибудь знает, как проверить действие?
import Vuex from "vuex";
import { Counter } from "@/store/modules/counter";
import { createLocalVue } from "@vue/test-utils";
const localVue = createLocalVue();
localVue.use(Vuex);
describe("Counter test", () => {
it("mutation test", () => {
const mockState = {
count: 0
};
Counter.mutations!.increment(mockState, {});
expect(mockState.count).toBe(1);
});
it("getter test", () => {
const mockState = {
count: 3
};
expect(Counter.getters!.getCount(mockState, null, null, null)).toBe(3);
});
it("action test", () => {
const mockState = {
count: 3
};
// IntelliJ show error message
// "Cannot invoke an expression whose type lacks a call signature. Type 'Action ' has no compatible call signatures."
Counter.actions!.add2();
expect(mockState.count).toBe(4);
});
});