programing

vuex 가입자의 메서드를 어떻게 감시합니까?

padding 2023. 7. 2. 19:06
반응형

vuex 가입자의 메서드를 어떻게 감시합니까?

Vue Component의 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();

이제 저는, 아마도 반응성 때문일 것이고 테스트는 가입자를 트리거하기 위해 더 많은 시간이 필요하다고 생각했습니다.

그래서 setTimeout()을 사용해 보았습니다.

setTimeout(() => {
     expect(methodToBeSpiedOn).toBeCalled();
     done();
}, 10000);

하지만 이것 또한 효과가 없습니다.

그래서 제 질문은:Vuex 가입자에서 호출되는 메서드를 어떻게 감시합니까?

아니면 제 접근 방식이 완전히 잘못된 것인가요, 구독자를 이렇게 테스트하면 안 되나요?

Component.methodssypyOn이 작동하지 않을 수 있습니다. 왜냐하면vm는 구성 요소의 메서드가 할당된 기본 개체입니다.

사용vm예를 들어 다음과 같습니다.

const setSelectedCompanySpy = jest.spyOn(
    componentwrapper.vm,
    "methodToBeSpiedOn"
);

expect(setSelectedCompanySpy).toBeCalled();

언급URL : https://stackoverflow.com/questions/67314026/how-do-i-spy-on-methods-in-a-vuex-subscriber

반응형