как протестировать глобальную шину событий, которая находится внутри установленного метода в шутку

export default class Test extends Vue {

 mounted() {
    this.getData();
    eventBus.$on("get", (id: string) => {
      this.displayData(id);
      
    });
}

getData(){

return "hello"

}

displayData(id){

}

Я написал спецификацию для тестового компонента, как показано ниже. Я использовал глобальную шину событий и пытаюсь проверить, отправлено событие или нет.

const EventBus = new Vue();
const GlobalPlugins = {
    install(v:any) {
        // Event bus
        v.prototype.eventBus = EventBus;
    }
};
 const localVue = createLocalVue()
  localVue.prototype.eventBus = createLocalVue();
   localVue.use(GlobalPlugins);

  describe('Test TestSuite', () => {
    let wrapper: any
    let TestObj: any;

    beforeEach(() => {
      const mocks = {
        eventBus: {
            $on: jest.fn(),
            $emit: jest.fn()
            }
        };
    wrapper = mount(Test, {
        mocks,
        localVue,
        router
       
      });
      console.log(eventBus.$emit) ---> returns null
      TestObj = wrapper.findComponent(Test).vm;
      console.log(eventBus.$emit) ---> returns null
    });

Здесь я попытался проверить, генерируется событие get или нет. но он дает только нулевой объект.

1 ответ

Решение

Проблема решена путем генерации событий и фиксации компонентов перед установкой.

Другие вопросы по тегам