【发布时间】:2021-07-22 14:59:00
【问题描述】:
在 Vue 组件的 created() 中,我有一个订阅 Vuex 商店的 Mutation 的订阅者。 我试图监视触发订阅者时调用的方法。 这是我的第一次直观尝试:
//Vue-Component
created(){
this.$store.subscribe((mutation) => {
if (mutation.type === "mutationname") {
this.methodToBeSpiedOn();
}
});
}
//jest
import Component from "...";
...
const setSelectedCompanySpy = jest.spyOn(
Component.methods,
"methodToBeSpiedOn"
);
componentwrapper.vm.$store.commit("mutationname")
expect(methodToBeSpiedOn).toBeCalled();
现在我想,可能是因为 Reactivity 并且测试需要更多时间来触发订阅者等等。
所以我尝试使用 setTimeout():
setTimeout(() => {
expect(methodToBeSpiedOn).toBeCalled();
done();
}, 10000);
但这也不起作用。
所以我的问题是:如何监视在 Vuex 订阅者中调用的方法?
或者我的方法完全错误,我不应该这样测试订阅者?
【问题讨论】:
标签: vue.js unit-testing jestjs vuex vue-test-utils