基本的なVue Vuexストアを参照するコンポーネントをテストしようとしています。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) {}
前もって感謝します。
ここでの「ゲッター」は適切に割り当てられていません。
beforeEach(() => {
getters: {
isLoggedIn: () => false
}
store = new Vuex.Store({
getters
})
})
そのはず getters = {...
のではなく getters: {...
beforeEachへの引数は関数であり、オブジェクトではないためです。
ドキュメントに正しく書かれていることを確認できます。
幸運を!
理解した。
コンポーネントでゲッターを宣言するときは、使用する変数を必ず定義してください。
@Component({
props: {
title: String
},
computed: mapGetters(['isLoggedIn'])
})
export default class Navbar extends mixins(Utils) {
isLoggedIn!: boolean <== I did not have this before.
...
}
編集:また、私は実際にテストでモックゲッターを使用していなかったので、ストアをモックする必要さえありません。あなたがする必要があるのは、コンポーネント上でその変数を宣言することです。