質問編集履歴
3
誤植修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -63,5 +63,5 @@
|
|
63
63
|
RSpec 3.9
|
64
64
|
|
65
65
|
#追記
|
66
|
-
|
66
|
+
2020/1/9 17:40
|
67
67
|
結構複雑な問題かと思いきや、post :create の実行時にアクションの最後でリダイレクトしていて、そのリダイレクト先のURLの :ap パラメタが設定されていないようでエラーが出ているっぽそう
|
2
状況の追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -60,4 +60,8 @@
|
|
60
60
|
#バージョン情報
|
61
61
|
ruby 2.6.2p47
|
62
62
|
Rails 5.1.6.2
|
63
|
-
RSpec 3.9
|
63
|
+
RSpec 3.9
|
64
|
+
|
65
|
+
#追記
|
66
|
+
2019/1/9 17:40
|
67
|
+
結構複雑な問題かと思いきや、post :create の実行時にアクションの最後でリダイレクトしていて、そのリダイレクト先のURLの :ap パラメタが設定されていないようでエラーが出ているっぽそう
|
1
ソース追加
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
1
|
+
rails5 rspec エンジンの単体テストでテスト結果がActionController::UrlGenerationError: No route matches となってしまう
|
body
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
+
#概要
|
1
|
-
標題の
|
2
|
+
標題の問題が発生しています。
|
2
3
|
|
3
4
|
[Rails4でEngineのcontroller specで必ずuse_routeする](https://qiita.com/k0kubun/items/47f4c0494e658d50862a)
|
4
5
|
こちらの記事を拝見し、use_routeを使用すれば解決できると思いましたが、
|
@@ -14,4 +15,49 @@
|
|
14
15
|
|
15
16
|
この部分の具体的な実装方法が分からないです。
|
16
17
|
|
17
|
-
ご存知の方、いらっしゃいましたらご教示お願い致します。
|
18
|
+
ご存知の方、いらっしゃいましたらご教示お願い致します。
|
19
|
+
|
20
|
+
そもそも解決方法は別にあるという場合もご指摘いただけると助かります。
|
21
|
+
#現在の状況
|
22
|
+
###試したこと
|
23
|
+
・下記のソースの状態でテストを実行すると「ActionController::UrlGenerationError: No route matches {}, missing required keys: [:ap]」というエラーが出力される
|
24
|
+
・ホストアプリ側のroute.rbの「scope "/:ap" do」の部分を「scope "/TEST" do」に変更するとテストはパスする
|
25
|
+
###ソース
|
26
|
+
ホストアプリ側で作成したspec sessions_controller_spec.rb
|
27
|
+
```Ruby
|
28
|
+
require "rails_helper"
|
29
|
+
RSpec.describe MyEngine::SessionsController, type: :controller do
|
30
|
+
routes { MyEngine::Engine.routes }
|
31
|
+
|
32
|
+
describe "POST sessions#create" do
|
33
|
+
before do
|
34
|
+
post :create, params: { user_id: "test_user", password: "test_user", ap: "TEST" }
|
35
|
+
end
|
36
|
+
|
37
|
+
it "redirect successfully" do
|
38
|
+
expect(response).to redirect_to top_path
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
```
|
43
|
+
ホストアプリ側のroute.rb
|
44
|
+
```Ruby
|
45
|
+
Rails.application.routes.draw do
|
46
|
+
scope "/:ap" do
|
47
|
+
mount MyEngine::Engine, at: "/my_engine", as: :my_engine
|
48
|
+
end
|
49
|
+
end
|
50
|
+
```
|
51
|
+
エンジン側のroute.rb
|
52
|
+
```Ruby
|
53
|
+
MyEngine::Engine.routes.draw do
|
54
|
+
get "login", to: "sessions#new", as: :login
|
55
|
+
post "login", to: "sessions#create"
|
56
|
+
get "/top/index", to: "top#index", as: :top
|
57
|
+
end
|
58
|
+
```
|
59
|
+
|
60
|
+
#バージョン情報
|
61
|
+
ruby 2.6.2p47
|
62
|
+
Rails 5.1.6.2
|
63
|
+
RSpec 3.9
|