これで CORS エラーが解決され、機能するようになりました。
概要
レール 6.1.3.1 Rスペック
基本的な動作仕様コード:
describe "index" do
it "should show me the list" do
visit dashboard_targets_path
end
end
ルートファイル
namespace :dashboard do
resources :targets
end
エラーには例外が表示されますが、奇妙なことに、アプリを呼び出していないかのように見え、テストコードで正しく失敗するだけです。
1) interaction for Dashboard::TargetsController index should show me the list
Failure/Error: visit dashboard_targets_path
NoMethodError:
undefined method `empty?' for nil:NilClass
# ./spec/system/dashboard/targets_behavior_spec.rb:16:in `block (3 levels) in <top (required)>'
# /Users/jason/.rvm/gems/ruby-2.6.6/gems/webmock-3.12.2/lib/webmock/rspec.rb:37:in `block (2 levels) in <main>'
# /Users/jason/.rvm/gems/ruby-2.6.6/gems/rspec-wait-0.0.9/lib/rspec/wait.rb:46:in `block (2 levels) in <main>'
テストコード内で失敗しているようです。デバッガーにドロップしてdashboard_targets_pathを直接実行すると、同じ例外が発生します。したがって、問題はテスト環境内でヘルパーを使用していることだけです。
開発環境内では、この機能は機能します。
解決策
ここでの問題は、config/environments/test.rb ファイルにdefault_url_options があることです。
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
Rails gem に消えるエラーが発生した場合、それらをデバッグする良い方法は次のとおりです。
begin
// your failing code here
rescue StandardError => e
puts e.backtrace
byebug
puts e.inspect
raise (e)
end
警告: フロー制御に例外処理を明示的に使用する場合を除き、このコードをアプリ内に残したり、チェックインしたりしないでください (推奨されません!)。これはデバッグ目的でのみ推奨されます。
ここでは、Gem 内の失敗している行番号への完全なバックトレースが表示されます。 Gem をデバッグするときは注意してください。行った変更は必ず元に戻してください。また、Gem コード内のモンキー パッチは製品コードに影響を与えないことを確認してください。
gem pristine