programing

인수 반환이 정의되지 않은 Vuex getters를 테스트하는 것은 함수가 아닙니다.

yoursource 2022. 8. 9. 21:54
반응형

인수 반환이 정의되지 않은 Vuex getters를 테스트하는 것은 함수가 아닙니다.

Karma와 Chai를 셋업하고 테스트 게터스를 따르려고 합니다.

여기 fruits.js 스토어의 코드가 있습니다.

// fruits.js store
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export const fruits = new Vuex.Store({
  state: {
    fruits: [
      {id: 1, name: 'Apple'},
      {id: 2, name: 'Banana'},
      {id: 3, name: 'Orange'}
    ]
  },
  mutations: {
  },
  actions: {
  },
  getters: {
    getFruitById (state, {id}) {
      return state.fruits.find(fruit => {
        return fruit.id === id
      })
    }
  }
})

fruit.spec.js 파일입니다.

// fruit.spec.js
import { expect } from 'chai'
import { fruits } from '../../../../src/store/fruits'

describe('getters', () => {
  it('getFruitById()', () => {
    // mock data
    const state = {
      fruits: [
        {id: 1, name: 'Apricot'},
        {id: 2, name: 'Kiwi'},
        {id: 3, name: 'Watermelon'}
      ]
    }
    const id = 1
    // find fruit by id
    const result = fruits.getters.getFruitById(state, {id})
    expect(result).to.deep.equal([
      {
        id: 1,
        name: 'Apricot'
      }
    ])
  })
})

실행 시fruit.spec.js테스트 결과 반환

undefined is not a function온라인.const result = fruits.getters.getFruitById(state, {id})

문제는 내 모의 상태가fruit.spec.js전달되지 않음fruit.js

어떻게 하면 시험에 합격할 수 있을까요?

getter를 유닛테스트하는 경우는, 개별적으로 export 할 필요가 있습니다.

// fruits.js store
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export const getters = {
  getFruitById (state, {id}) {
    return state.fruits.find(fruit => {
      return fruit.id === id
    })
  }
}

export const fruits = new Vuex.Store({
  state: {
    fruits: [
      {id: 1, name: 'Apple'},
      {id: 2, name: 'Banana'},
      {id: 3, name: 'Orange'}
    ]
  },
  mutations: {
  },
  actions: {
  },
  getters,
})

그런 다음 장치 테스트에서 다음과 같이 액세스할 수 있습니다.

import { getters } from '../../../../src/store/fruits'
// ...
    const result = getters.getFruitById(state, {id})
// ....

언급URL : https://stackoverflow.com/questions/48942876/testing-vuex-getters-with-argument-returns-undefined-is-not-a-function

반응형