5

Tôi đang sử dụng đường ray 5 và minitest. Tôi đã tự hỏi, làm thế nào để kiểm tra giá trị của một trường trong một biến mẫu của phương thức điều khiển của tôi. Tôi nhận thấy rằng nếu tôi muốn kiểm tra xem biến có được xác định hay không, tôi có thể làmLàm thế nào để kiểm tra giá trị của một thuộc tính trong một biến đối tượng điều khiển?

assert_not_nil assigns(:issue) 

nhưng tôi không rõ ràng nếu tôi muốn kiểm tra giá trị của @ issue.stop_id. Phương pháp điều khiển của tôi là

# 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 

Tôi đang cố gắng này trong phương pháp thử nghiệm của tôi

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 

nhưng tôi nhận được một NoSuchMethodError trên dòng

assert_equal test_stop_id, @issue.stop_id 

trong phương pháp kiểm tra

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 

Trả lời

0

Đây có thể không phải là tốt nhất cách để xử lý nó, nhưng tôi đã nhận thấy rằng việc sử dụng assigns(:instance_var_name) sẽ trả lại giá trị của biến mẫu, vì vậy bạn có thể kiểm tra giá trị từ đó với một cái gì đó như sau:

issue_var = assigns(:issue) 
assert_equal test_stop_id, issue_var.stop_id 
Các vấn đề liên quan