5

私はレール5とminitestを使用しています。私は、コントローラメソッドのインスタンス変数のフィールドの値をどのようにテストするのだろうと思います。私は、変数が定義されているかどうかをテストしたい場合、私はコントローラインスタンス変数の属性の値をテストするにはどうすればよいですか?

assert_not_nil assigns(:issue) 

を行うことができますことを認識しますが、私は、@ issue.stop_idの値をテストしたい場合、私はあまり明確です。私のコントローラメソッドは

# GET /issues/new 
    def new 
    unless user_signed_in? 
     redirect_to new_user_session_path 
    end 
    @issue = Issue.new(stop_onestop_id: params[:stop_id], line_onestop_id: params[:line_id]) 
    end 

私は私のテスト方法

test "get index page" do 
    get index_url 
    assert_not_nil assigns(:issue) 
    assert_equal test_stop_id, @issue.stop.id 
    assert_equal test_line_id, @issue.line.id 
    assert_response :success 
    end 

でこれをしようとしているが、私は試験方法でライン

assert_equal test_stop_id, @issue.stop_id 

でNoSuchMethodErrorを取得していますです

test "logged in should get issues page" do 
    sign_in users(:one) 
    test_stop_id = 1 
    test_line_id = 1 
    get new_issue_url, params: {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 

答えて

0

これは最適ではない可能性があります。それを処理する方法は、私はassigns(:instance_var_name)を使用してインスタンス変数の値を返すことに気づいたので、このようなもので値をテストすることができます:

issue_var = assigns(:issue) 
assert_equal test_stop_id, issue_var.stop_id 
関連する問題