5

5 ve en az rayları kullanıyorum. Merak ediyordum, bir alanın değerini denetleyici yöntemimin örnek değişkeninde nasıl test ederim. Ben değişken tanımlanmış olup olmadığını test etmek istiyorsanız, benBir denetleyici örneği değişkeninde bir özniteliğin değerini nasıl sınayın?

assert_not_nil assigns(:issue) 

yapabileceği fark ama @ issue.stop_id değerini test etmek istiyorsanız ben bu kadar net değilim. Benim denetleyicisi yöntemi

# 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 

benim test yöntemiyle

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 

bu çalışıyorum ama deney yönteminde hattı

assert_equal test_stop_id, @issue.stop_id 

bir NoSuchMethodError alıyorum olduğunu

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 

cevap

0

Bu en iyi olmayabilir işlemek için, ancak assigns(:instance_var_name) kullanarak, örnek değişkenin değerini döndüreceğini fark ettim, bu nedenle bunun gibi bir şeyle değeri test edebilirsiniz:

issue_var = assigns(:issue) 
assert_equal test_stop_id, issue_var.stop_id