programing

간격이 있는 vueJS 라이프사이클 후크에서의 비동기 Jest 테스트

itsource 2022. 7. 29. 23:44
반응형

간격이 있는 vueJS 라이프사이클 후크에서의 비동기 Jest 테스트

"before Create" 후크에서 다음과 같은 농담을 사용하여 "auth/refresh" 액션을 테스트하는 방법을 이해하고 싶습니다.

// 메인.표시하다

async beforeCreate() {
    let authTokenRefreshIntervalId;

    await this.$store.dispatch('auth/initialize');

    authTokenRefreshIntervalId = setInterval(() => {
      this.$store.dispatch('auth/refresh').catch(() => {
        this.$store.dispatch('auth/logout');
        clearInterval(authTokenRefreshIntervalId);
      });
    }, 30 * 1000);
}

// main.spec.disc

import Vue from 'vue';
import Vuex from 'vuex';
import { shallow, createLocalVue, mount } from '@vue/test-utils';
import Main from '@/main';

const localVue = createLocalVue();

jest.useFakeTimers();

describe('store-auth', () => {
  let store;
  let actions;
  let getters;

  beforeEach(() => {
    actions = {
      initialize: jest.fn(),
      refresh: jest.fn(),
      logout: jest.fn(),
    };

    getters = {
      isAuthenticated: jest.fn(),
    };

    store = new Vuex.Store({
      modules: {
        auth: {
          namespaced: true,
          actions,
          getters,
        },
      },
    });
  });

  it('dispatch initialize on beforeCreate hook', () => {
    const wrapper = shallow(Main, { store, localVue });
    expect(actions.initialize).toHaveBeenCalled();
  });

  it('dispatch refresh on beforeCreate hook every 30s', () => {
    const wrapper = shallow(Main, { store, localVue });
    jest.runTimersToTime(30 * 1000);
    expect(actions.refresh).toHaveBeenCalled();
  });
});

조롱된 함수는 호출되지 않는다고 농담은 말한다.로 시도했다.expect(setInterval).toHaveBeenCalled()시험에 합격했어요내가 틀린 곳이 어디지?

테스트에서도 비동기/대기 기능을 사용해 보십시오.

it('dispatch refresh on beforeCreate hook every 30s', async () => {
    const wrapper = shallow(Main, { store, localVue });
    jest.runTimersToTime(30 * 1000);
    await expect(actions.refresh).toHaveBeenCalled();
 });

언급URL : https://stackoverflow.com/questions/50253486/async-jest-test-in-vuejs-lifecycle-hook-with-interval

반응형