1

私はRails 5にアップグレードしました。スペックをパスするための最初のハードルは、 'No route matches'エラーです。Rails 5の "No route matches"機能テストエラーを解決する方法

以下のテストとtest_helperを参照してください。 test_helperまたはtest.rbに追加する必要があるものはありますか?誰でも原因や解決方法を知っていますか?

.....

単にパスを取得しようとしたとき、私は、単一のテストを実行してきた:私のusers_controller_test.rbにラインの新しいを取得する必要があります」です

bin/rails test test/controllers/users_controller_test.rb:31 

require 'test_helper' 
describe UsersController do 
//class UsersControllerTest < ActionDispatch::IntegrationTest 
    before do 
    glenn = users(:glenn) 
    sign_in(glenn) 
    end 

    it 'should get new' do 
    get new_user_url 
    value(response).must_be :success? 
    end 
end 

この結果、次のエラーが発生します。

Error: 
UsersController#test_0002_should get new: 
ActionController::UrlGenerationError: No route matches {:action=>"http://test.host/users/new", :controller=>"users"} 
test/controllers/users_controller_test.rb:32:in `block (2 levels) in <top (required)>' 

test_helper.rb

ENV['RAILS_ENV'] = 'test' 
require File.expand_path('../../config/environment', __FILE__) 
require 'rails/test_help' 
require 'minitest/rails' 

class ActionController::TestCase 
    include ActiveJob::TestHelper 
    include Devise::Test::ControllerHelpers 
end 

class ActionDispatch::IntegrationTest 
    include Devise::Test::IntegrationHelpers 
end 

class ActiveSupport::TestCase 
    ActiveRecord::Migration.check_pending! 
    fixtures :all 
    include ActionDispatch::TestProcess # fixture_file_upload 
end 

答えて

0

troubeシューティングこれを私は...新しいレール5アプリ、インストール工夫とminitestレールを作成し、これらのテストは合格している間。新しいURLスタイルの構文は、コントローラテストの記述ブロックの内部でうまく機能しています。しかし、この質問に関連するアプリケーションでは、url構文がdescribeブロック内で動作していないため、少なくとも今のところ、describeブロックをActionDispatch :: IntegrationTestから継承するクラスに置き換える。私はまだ分かりませんが、なぜこれが理由です。

0

私はこの同じ問題を抱えていましたが、それが機能する理由を内部的には完全にはわかっていませんが、動作させることができました。

明らかに仕様の種類が必要です。

require 'rails_helper' 

RSpec.describe TimingsController, type: :controller do 
    describe "GET new", type: :request do 
    it "renders the new template" do 
     get new_timing_path 
     expect(response).to be_successful 
    end 
    end 
end 

type: request一部が不可欠であるようなので、それはそう:私は今、それが機能してい何

require 'rails_helper' 

RSpec.describe TimingsController, type: :controller do 
    describe "GET new" do 
    it "renders the new template" do 
     get new_timing_path 
     expect(response).to be_successful 
    end 
    end 
end 

:私は上記のようなエラーが生じたことを持っていた何

関連する問題