2017-12-24 36 views
1

私はRails 5とminutestを使っていて、コントローラのテストを書こうとしています。テストはテストフレームワークがルートファイルで定義されたURLを見つけられないのはなぜですか?

# issues_controller_test.rb 
class IssuesControllerTest < ActionDispatch::IntegrationTest 

    include Devise::Test::IntegrationHelpers 

    test "logged in should get issues page" do 
    sign_in users(:one) 
    test_stop_id = 1 
    test_line_id = 1 
    get new_issue, :stop_id => test_stop_id, :line_id => test_line_id 
    assert_equal test_stop_id, @issue.stop_id 
    assert_equal test_line_id, @issue.line_id 
    assert_response :success 
    end 
end 

問題の方法は、私のレールのルートで定義され、このページにアクセスしようとしている私は、テストを実行すると...

  new_issue GET  /issues/new(.:format)    issues#new 

はまだ、私はこのエラー

# Running: 

.E 

Error: 
IssuesControllerTest#test_logged_in_should_get_issues_page: 
NameError: undefined local variable or method `new_issue' for #<IssuesControllerTest:0x007f816759b330> 
    test/controllers/issues_controller_test.rb:10:in `block in <class:IssuesControllerTest>' 


bin/rails test test/controllers/issues_controller_test.rb:6 



Finished in 0.103956s, 19.2389 runs/s, 9.6195 assertions/s. 
を取得します

なぜテストフレームワークは自分のルートファイルで定義されたメソッドを見つけることができませんか?道はどこにも定義されていないだけのローカル変数である

答えて

0

new_issuenew_issue_urlでの作業のURLとして指定してみてください:

test 'logged in should get issues page' do 
    sign_in users :one 
    test_stop_id = 1 
    test_line_id = 1 
    get new_issue_url, stop_id: test_stop_id, line_id: test_line_id 
    assert_equal test_stop_id, @issue.stop_id 
    assert_equal test_line_id, @issue.line_id 
    assert_response :success 
end 
関連する問題