programing

TypeError: 정의되지 않은 속성 'getters'를 읽을 수 없습니다.

itsource 2022. 7. 26. 23:18
반응형

TypeError: 정의되지 않은 속성 'getters'를 읽을 수 없습니다.

Vuex 스토어를 참조하는 기본적인 Vue 컴포넌트를 테스트하려고 합니다.Vue의 예(https://vue-test-utils.vuejs.org/guides/using-with-vuex.html#mocking-getters)에서 T까지)를 따라한 것 같았는데 효과가 없는 것 같습니다.

제목에 기재되어 있는 에러가 표시됩니다.

const localVue = createLocalVue()
localVue.use(Vuex)

describe('Navbar.vue', () => {
  let store: any
  let getters: any

  beforeEach(() => {
    getters: {
      isLoggedIn: () => false
    }

    store = new Vuex.Store({
      getters
    })
  })

  it('renders props.title when passed', () => {
    const title = 'Smart Filing'
    const wrapper = shallowMount(Navbar, {
      propsData: { title },
      i18n,
      store,
      localVue,
      stubs: ['router-link']
    })

    expect(wrapper.text()).to.include(title)
  })
})

수업 구성 요소를 사용하고 있는데 그게 관련이 있는 건 아닐까요?

@Component({
  props: {
    title: String
  },
  computed: mapGetters(['isLoggedIn'])
})
export default class Navbar extends mixins(Utils) {}

잘 부탁드립니다.

여기서 "getters"가 올바르게 할당되지 않았습니다.

  beforeEach(() => {
    getters: {
      isLoggedIn: () => false
    }

    store = new Vuex.Store({
      getters
    })
  })

그럴 것 같네요.getters = {...보다는getters: {...왜냐하면 당신의 인수는 각각 함수이지 객체가 아니기 때문입니다.

서류에 정확하게 기재되어 있는 것을 확인할 수 있습니다.

행운을 빕니다.

알아냈어.

컴포넌트에서 getter를 선언할 때 사용할 변수를 정의해야 합니다.

@Component({
  props: {
    title: String
  },
  computed: mapGetters(['isLoggedIn'])
})
export default class Navbar extends mixins(Utils) {
  isLoggedIn!: boolean <== I did not have this before. 
  ...
}

편집: 또한 테스트에서 실제로 모의 게터를 사용하지 않았기 때문에 가게를 조롱할 필요도 없습니다.컴포넌트에 해당 변수를 선언하기만 하면 됩니다.

이 에러 메시지는 같은 모듈을 Import하고 있는2개의 다른 스토어인스턴스를 로드하려고 했을 때 표시됩니다.기본적으로 Vuex는 단일 저장소를 가정합니다.뭔가 이상한 일이 일어나고 있었고, 이 오류가 그 결과였다.

언급URL : https://stackoverflow.com/questions/54526637/typeerror-cannot-read-property-getters-of-undefined

반응형