2022年6月1日水曜日

田中賢一郎氏 Webアプリ開発入門: 4.Jest編 7.2.1 InventoryInput.vue

  田中賢一郎氏の

Webアプリ開発入門: 4.Jest編 Future Coders テキスト

そろそろ中盤です



今回は、7.2.1 InventoryInput.vue

実際に動くコードをテスト駆動開発でやります。

楽しみです。


以下を本にのっとって写経します。

InventoryInput.spec.js

Inventoryinput.vue


unitテスト実行


SyntaxError: Invalid end tag


うーん。タグがどこかで閉じれてないのか、、、

vscode上も、赤の波線が出ているところもあるのですが

出ててもちゃんと動いたこともあったと思うので

あてにできない、、、


https://www.future-coders.net/  の実装コード、また参考にさせてもらいます。


んー。

どこだ?

空白までチェックするのはやめるか、、、

WinMergeの「編集」「設定」で、、

「オプション」の「比較」「一般」の「空白」で「すべて無視」を選択 にしてしまおう。


するとどうなる、、、


だいぶ見やすくなったか。

違う部分を直してみよう。


修正して再度単体テスト実行、、、


3番目のテストで引っかかっている。

    TypeError: wrapper.emitted(...)[0].toEqual is not a function


      47 |

      48 |         await wrapper.vm.$nextTick()

    > 49 |         expect(wrapper.emitted("add")[0].toEqual([{"count":3,"model":"A"}]));

         |                                          ^

      50 |         expect(wrapper.emitted("del")[0].toEqual([{"count":3,"model":"A"}]));

      51 |     });

      52 |


      at Object.<anonymous> (tests/unit/InventoryInput.spec.js:49:42)


行数が実際のコードと違うが、大体48行目付近のコードがおかしいと言っている。

答えを目視しても違いがよくわからなかったのでdiff


括弧の位置が、、、、、ちがう。


これも直して、、、



通った、、、


これは厳しい、、、


答えが無かったら軽く数時間はかかるところだ。

括弧の違いとかもうわからない。


実際の仕事で単体テスト実装していたら同様の問題が起きそう。

その時は解決できるのかな、、、

不安だ、、、