teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

文章の不自然な箇所を修正

2021/04/15 05:55

投稿

退会済みユーザー
answer CHANGED
@@ -8,7 +8,7 @@
8
8
  ここのテストが通らないのはおっしゃっている通り、文字列(response.body)と数値(@drink.price)を比較しているからだと思います。起きている事象としてはこんな感じだと思います。
9
9
 
10
10
  ```irb
11
- irb(main):004:0> body = '350円' # 本当はHTML文字列だが便宜上省略
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
- 本題と関係ないところですが、一点気になったところがあったので、書いておきます。ここなのですが、一般的にRSpecでなにか変数を定義したい場合は `let` を使う方が一般的です。↓この辺りに色々書いてありますので時間あるの時、その辺りも見直してみると良いかも知れません????
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