【发布时间】:2022-11-02 17:17:31
【问题描述】:
我有一个简单的可组合 useRoles 我需要测试
import { computed } from "vue";
import { useStore } from "./store";
export default function useRoles() {
const store = useStore();
const isLearner = computed(() => store.state.profile.currentRole === "learner");
return {
isLearner
};
}
我的测试方法如下
import { afterEach, expect } from "vitest";
import useRoles from "./useRoles";
describe("useRoles", () => {
afterEach(() => {
vi.clearAllMocks();
vi.resetAllMocks();
});
it("should verify values when is:Learner", () => { // works
vi.mock("./store", () => ({
useStore: () => ({
state: {
profile: {
currentRole: "learner"
},
},
}),
}));
const { isLearner } = useRoles();
expect(isLearner.value).toBeTruthy();
});
it("should verify values when is:!Learner", () => { //fails
vi.mock("./store", () => ({
useStore: () => ({
state: {
profile: {
currentRole: "admin"
},
},
}),
}));
const { isLearner } = useRoles(); // Values are from prev mock
expect(isLearner.value).toBeFalsy();
});
});
而useStore 只是我打算模拟的一个简单函数
export function useStore() {
return {/**/};
}
第一个测试成功运行,它具有我实现的所有模拟值,但问题是它没有为每个测试重置(根本没有重置)。第二个测试具有前一个模拟的旧值。
我用过
vi.clearAllMocks();
vi.resetAllMocks();
但由于某种原因,清除或重置没有发生。
如何清除每个测试的 vi.mock 值?
vitest = v0.23.0
【问题讨论】:
标签: javascript typescript vuejs3 vitest