質問: nil @item.valid? expect(@item.errors.full_messages).to include('商品の名前を入力してください') end ~省略~ ``` それを踏まえてこのように記述したが先程のターミナルで表示されたエラーが発生してしまいます。 ### 試したこと 自分の記述ミスなども考えエラー文を表示させてからそれをコピペして貼ってみたりしてみたがどうしてもうまくいかなかった、しかし英語表記のエラー文をテストコードで使用するとテストがうまくいきます 日本語表記にしたのですから日本語表記のエラー文でテストができないと意味がありません、ですがどうしてもうまくいかないです。 皆様のお知恵を貸していただけると幸いにございます。 ### 補足情報(FW/ツールのバージョンなど) rubyバージョン _6.0.0_
回答: 追記 すいません。日本語訳を見落としていました。 gem 'rails-i18n'とconfig.i18n.default_locale = :jaで大丈夫なはずです。 下記コードであれば動くので試してみてください。 ``` it 'itemが空だと出品できない' do item = Item.new(name:nil) item.valid? expect(item.errors.full_messages).to include('商品の名前を入力してください') end ``` 原因は、ご提示頂いたコードだと、`@item.item = nil`ではなく、`@item.name = nil`が正解なはずです。 補足情報として、エラーメッセージのテストはあまり行わないことが多いかと思います。 理由として、何らかの理由でエラーメッセージを変更すると、テストをいちいち修正しなければならない、という問題が発生したりするからです。 そのためこちらの方法や下記などでテストするほうが望ましい気がします。 ``` item = Item.new(name:nil) expect(item).to_not be_valid ``` ~~バリデーションエラーも翻訳して、日本語にしてはいかがでしょうか?~~