回答編集履歴
1
文章の不自然な箇所を修正
answer
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
ここのテストが通らないのはおっしゃっている通り、文字列(response.body)と数値(@drink.price)を比較しているからだと思います。起きている事象としてはこんな感じだと思います。
|
9
9
|
|
10
10
|
```irb
|
11
|
-
irb(main):004:0> body = '350円' #
|
11
|
+
irb(main):004:0> body = '350円' # 便宜上省略した文字列を定義
|
12
12
|
=> "350円"
|
13
13
|
irb(main):005:0> body.include?(350) # bodyの中に350が含まれるかをチェック
|
14
14
|
Traceback (most recent call last):
|
@@ -32,6 +32,12 @@
|
|
32
32
|
で良いのではないかなと思います。テスト内では期待値の部分を変数を使わず、ベタ書きするのはよくやります。
|
33
33
|
参考:[テストコードの期待値はDRYを捨ててベタ書きする ~テストコードの重要な役割とは?~ - Qiita](https://qiita.com/jnchito/items/eb3cfa9f7db752dcb796)
|
34
34
|
|
35
|
+
どうしても変数を使いたい場合は、式展開などが良いかも知れません。
|
36
|
+
|
37
|
+
```rb
|
38
|
+
expect(response.body).to include("#{@drink.price}円")
|
39
|
+
```
|
40
|
+
|
35
41
|
---
|
36
42
|
|
37
43
|
画像のテストの箇所に関しては、ここ↓で画像URLの文字列と比較できていないのかなと思います。
|
@@ -72,7 +78,7 @@
|
|
72
78
|
end
|
73
79
|
```
|
74
80
|
|
75
|
-
本題と関係ないところですが、一点気になったところがあったので、書いておきます。
|
81
|
+
本題と関係ないところですが、一点気になったところがあったので、書いておきます。上記なのですが、RSpecでなにか変数を定義したい場合は `let` を使う方が一般的です。下記記事に色々Tipsが書いてありますので時間あるの時、その辺りも見直してみると良いかも知れません????
|
76
82
|
[「RSpec で example の外で定義したローカル変数を使うのはアリか?」に対する僕の見解と解決策 - give IT a try](https://blog.jnito.com/entry/2016/09/03/145148)
|
77
83
|
[RSpecのletを使うのはどんなときか?(翻訳) - Qiita](https://qiita.com/jnchito/items/cdd9eef2ed193267c651)
|
78
84
|
|