質問編集履歴

2

タイトル変更

2019/07/06 01:16

投稿

runes224
runes224

スコア14

test CHANGED
@@ -1 +1 @@
1
- Rspecで「_path」メソッドが使用できない
1
+ Ruby on Rails 5 速習実践ガイド』のRSpecで「visit 〇〇_path」が使用できない
test CHANGED
File without changes

1

タイトル変更、ドキュメントの追加

2019/07/06 01:15

投稿

runes224
runes224

スコア14

test CHANGED
@@ -1 +1 @@
1
- Rails.application.routes.url_helpers読み込めない
1
+ Rspecで「_path」メソッド使用できない
test CHANGED
@@ -4,15 +4,21 @@
4
4
 
5
5
  現場で使えるRubyonRails5速習実践ガイドをDocker環境で学習しています。
6
6
 
7
-
8
-
9
- 以下通り「_path」メソッドでエラーが発生しました。
7
+ Rspecで検証において、`visit task_path(task_a)`でエラーがました。
8
+
9
+
10
+
11
+
12
+
10
-
13
+ ```
14
+
11
- `NameError:undefined local variable or method 'task_a' for #<RSpec::ExampleGroups::Nested::Nested_2::A:0x000055f5b4270a60>`
15
+ NameError:undefined local variable or method 'task_a' for #<RSpec::ExampleGroups::Nested::Nested_2::A:0x000055f5b4270a60>
16
+
12
-
17
+ ```
13
-
14
-
18
+
19
+
20
+
15
- 調べてみると、spec_helper.rbに以下を追加すると解決するそうなのですが、`Rails.application.routes.url_helpers`が読み込めないというエラーが発生してしまいます。
21
+ 調べてみると、spec_helper.rbに以下を追加すると解決するそうなのですが、次は`Rails.application.routes.url_helpers`が読み込めないというエラーが発生してしまいます。
16
22
 
17
23
 
18
24
 
@@ -26,6 +32,8 @@
26
32
 
27
33
  ```
28
34
 
35
+
36
+
29
37
  参考
30
38
 
31
39
  [stackoverflow「Rspec and named routes」](https://stackoverflow.com/questions/22741975/undefined-local-variable-or-method-root-path)
@@ -84,6 +92,112 @@
84
92
 
85
93
 
86
94
 
95
+ spec/system/tasks_spec.rb
96
+
97
+ ```
98
+
99
+ require 'rails_helper'
100
+
101
+
102
+
103
+ describe 'タスク管理機能',type: :system do
104
+
105
+ describe '一覧表示機能' do
106
+
107
+ let(:user_a){ FactoryBot.create(:user, name: 'ユーザーA', email: 'a@example.com') }
108
+
109
+ let(:user_b){ FactoryBot.create(:user, name: 'ユーザーB', email: 'b@example.com') }
110
+
111
+ let!(:task_a){ FactoryBot.create(:task, name: '最初のタスク', user: user_a) }
112
+
113
+
114
+
115
+ before do
116
+
117
+ FactoryBot.create(:task, name: '最初のタスク', user: user_a)
118
+
119
+ visit login_path
120
+
121
+ fill_in 'メールアドレス', with: login_user.email
122
+
123
+ fill_in 'パスワード', with: login_user.password
124
+
125
+ click_button 'ログインする'
126
+
127
+ end
128
+
129
+
130
+
131
+ context 'ユーザーAがログインしているとき' do
132
+
133
+ let(:login_user) { user_a }
134
+
135
+
136
+
137
+ it 'ユーザーAが作成したタスクが表示される' do
138
+
139
+ expect(page).to have_content '最初のタスク'
140
+
141
+ end
142
+
143
+ end
144
+
145
+
146
+
147
+ context 'ユーザーBがログインしているとき' do
148
+
149
+ let(:login_user) { user_b }
150
+
151
+
152
+
153
+ it 'ユーザーAが作成したタスクが表示されない' do
154
+
155
+ # ユーザーAが作成したタスクが画面上に表示されないことを確認
156
+
157
+ expect(page).not_to have_content '最初のタスク'
158
+
159
+ end
160
+
161
+ end
162
+
163
+ end
164
+
165
+
166
+
167
+ describe '詳細表示機能' do
168
+
169
+ context 'ユーザーAがログインしているとき' do
170
+
171
+ let(:login_user) { user_a }
172
+
173
+
174
+
175
+ before do
176
+
177
+ visit task_path(task_a)
178
+
179
+ end
180
+
181
+
182
+
183
+ it 'ユーザーAが作成したタスクが表示される' do
184
+
185
+ expect(page).to have_content '最初のタスク'
186
+
187
+ end
188
+
189
+ end
190
+
191
+ end
192
+
193
+ end
194
+
195
+
196
+
197
+ ```
198
+
199
+
200
+
87
201
  spec/spec_helper.rb
88
202
 
89
203
  ```ruby