質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Vuex

Vuexは、Vue.js アプリケーションのための状態管理ライブラリです。アプリケーション内で使用するコンポーネントのための集中データストアを提供。コンポーネント同士でデータをやり取りし、処理のフローを一貫させたり、データの見通しを良くすることができます。

Q&A

解決済

1回答

608閲覧

[Nuxt]テストが通らない

退会済みユーザー

退会済みユーザー

総合スコア0

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Vuex

Vuexは、Vue.js アプリケーションのための状態管理ライブラリです。アプリケーション内で使用するコンポーネントのための集中データストアを提供。コンポーネント同士でデータをやり取りし、処理のフローを一貫させたり、データの見通しを良くすることができます。

0グッド

0クリップ

投稿2020/07/12 08:30

編集2020/07/12 10:22

やっていること

fruitsの名前を表示するだけの簡単なアプリケーションをNuxtで作成し、そのテストを書こうとしています。
実装自体は完了しており問題なく動作していますが、テストがどうしても通らず詰まってしまったため質問させていただきたいです。

問題点

テストを流すと以下のようなエラーが返ってきて落ちてしまします。
storeに処理を分けて書いている場合のテストの書き方が分からないため、もしご存知の方がいらっしゃいましたら教えていただきたいです。

[vuex] unknown getter: pages/fruits/FRUITS [vuex] unknown action type: pages/fruits/GET_FRUITS

アプリ側のソースコード

vue

1<!-- src/pages/fruits/index.vue --> 2 3<template> 4 <div> 5 <div 6 v-for="f in getFruits" 7 :key="f.id" 8 class="Item" 9 > 10 {{ f.name }} 11 </div> 12 </div> 13</template> 14 15<script> 16import { mapActions, mapGetters } from 'vuex' 17import { ACTION_TYPES, GETTER_TYPES } from '~/store/pages/fruits/index' 18 19export default { 20 computed: { 21 ...mapGetters({ 22 fruits: GETTER_TYPES.FRUITS, 23 }) 24 }, 25 26 methods: { 27 ...mapActions({ 28 getFruits: ACTION_TYPES.GET_FRUITS, 29 }) 30 } 31} 32</script>

テスト側のソースコード

とりあえず、fruitsが一つでも表示されているか(= Itemclassが一つでも存在するか)をテストしようとしています

ts

1// tests/pages/fruits/index.spec.ts 2 3import { shallowMount, createLocalVue } from '@vue/test-utils' 4import Vuex from 'vuex' 5import * as fruits from '~/store/pages/fruits/index' 6 7const localVue = createLocalVue() 8localVue.use(Vuex) 9 10describe('Index', () => { 11 let s 12 s = { 13 modules: { 14 fruits: { 15 getters: { 16 FRUITS: () => [{ id: 1, name: 'apple' }] 17 }, 18 actions: { 19 GET_FRUITS: jest.fn() 20 } 21 } 22 } 23 } 24 }) 25 const store = new Vuex.Store(s) 26 27 const wrapper = shallowMount<any>(Index, { 28 localVue, 29 store 30 }) 31 32 it('shows', () => { 33 expect(wrapper.find('.Item').exists()).toBe(true) 34 })

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

以下のように修正したら通りました。

s = { modules: { fruits: { getters: { 'pages/fruits/FRUITS': () => [{ id: 1, name: 'apple' }] }, actions: { 'pages/fruits/GET_FRUITS': jest.fn() } } } } })

投稿2020/07/12 10:24

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問