回答編集履歴

1

修正

2020/09/26 05:24

投稿

no1knows
no1knows

スコア3365

test CHANGED
@@ -1 +1,63 @@
1
+ 追記
2
+
3
+
4
+
5
+ すいません。日本語訳を見落としていました。
6
+
7
+ gem 'rails-i18n'とconfig.i18n.default_locale = :jaで大丈夫なはずです。
8
+
9
+
10
+
11
+ 下記コードであれば動くので試してみてください。
12
+
13
+
14
+
15
+ ```ここに言語を入力
16
+
17
+ it 'itemが空だと出品できない' do
18
+
19
+ item = Item.new(name:nil)
20
+
21
+ item.valid?
22
+
23
+ expect(item.errors.full_messages).to include('商品の名前を入力してください')
24
+
25
+ end
26
+
27
+ ```
28
+
29
+
30
+
31
+ 原因は、ご提示頂いたコードだと、`@item.item = nil`ではなく、`@item.name = nil`が正解なはずです。
32
+
33
+
34
+
35
+ ---
36
+
37
+
38
+
39
+ 補足情報として、エラーメッセージのテストはあまり行わないことが多いかと思います。
40
+
41
+ 理由として、何らかの理由でエラーメッセージを変更すると、テストをいちいち修正しなければならない、という問題が発生したりするからです。
42
+
43
+ そのため[こちらの方法](https://qiita.com/jnchito/items/6cf94a82e719c1dca5f1)や下記などでテストするほうが望ましい気がします。
44
+
45
+
46
+
47
+ ```
48
+
49
+ item = Item.new(name:nil)
50
+
51
+ expect(item).to_not be_valid
52
+
53
+ ```
54
+
55
+
56
+
57
+ ---
58
+
59
+
60
+
61
+
62
+
1
- バリデーションエラーも翻訳して、日本語にしてはいかがでしょうか?
63
+ ~~バリデーションエラーも翻訳して、日本語にしてはいかがでしょうか?~~