2014-12-02 2 views
0

테스트 데이터베이스에서 발생하는 문제를 해결하려고합니다. 나는 현재 애자일 웹 개발 4를 따르고 있으며 각 장을 살펴보고있다. 어딘가에 3/4을 따라 나는 테스트 데이터베이스가 데이터를 유지하고 있음을 발견했으며 현재이 작업이 정확히 어디에서 일어나고 있는지 알아 내려고합니다. 내가 실행하려고하는 orders_controller_test.rb 파일이 있습니다.Rails가 단일 레이크 테스트를 실행하지 않는 이유는 무엇입니까?

제가

rake test:controllers

rake test test/controllers/orders_controller_test.rb

rake test 

을 실행할 때 테스트가 실행되고 데이터는 유지된다. 한 번에 하나씩 테스트하여 테스트하고 싶습니다. 이렇게하려면이 명령을 실행하고 싶습니다. 레일 4 가이드에 표시된대로

rake test test/controllers/orders_controller_test.rb name_of_test 

이 명령의 실행이 산출 :

enter image description here

당신이 테스트를 실행하지만 실제로는 그렇게하지 않습니다 볼 수 있듯이. 주장이 없으며 이것은 혼란스럽고 좌절 스럽습니다. 나는이 웹 문서를 참조하고 그것에있는 방법을 시도했다. Different ways to run rails tests

왜 제대로 실행되지 않습니다. 이것은 대단히 실망스럽고 나는 그것이 단순한 것으로 의심합니다. 누군가 일어날 일을 정확히 찾아 낼 수 있습니까? 도움말 크게 감사하겠습니다.

는 ----- 편집 -----------

컨트롤러

require 'test_helper' 

class OrdersControllerTest < ActionController::TestCase 
    def setup 
    @order = orders(:one) 
    end 

    def teardown 
    @order = nil 
    end 

    test "should get index" do 
    get :index 
    assert_response :success 
    assert_not_nil assigns(:orders) 
    end 

    test "should get new" do 
    get :new 
    assert_response :redirect 
    end 

    test "should create order" do 
    assert_difference('Order.count') do 
     post :create, order: { address: @order.address, email: @order.email, name: @order.name, pay_type: @order.pay_type } 
    end 

    assert_redirected_to store_path 
    end 

    test "should show order" do 
    get :show, id: @order 
    assert_response :success 
    end 

    test "should get edit" do 
    get :edit, id: @order 
    assert_response :success 
    end 

    test "should update order" do 
    patch :update, id: @order, order: { address: @order.address, email: @order.email, name: @order.name, pay_type: @order.pay_type } 
    assert_redirected_to order_path(assigns(:order)) 
    end 

    test "should destroy order" do 
    assert_difference('Order.count', -1) do 
     delete :destroy, id: @order 
    end 

    assert_redirected_to orders_path 
    end 

    test "requires item in cart" do 
    get :new 
    assert_redirected_to store_path 
    assert_equal flash[:notice], 'Your cart is empty' 
    end 

    test "should get new order" do 
    item = LineItem.new 
    item.build_cart 
    item.product = products(:ruby) 
    item.save! 
    binding.pry 
    session[:cart_id] = item.cart.id 
    get :new 
    binding.pry 
    assert_response :success 
    end 

end 
+0

어쩌면 테스트를 보여줄 수도 있습니다. – engineersmnky

+0

빠른 답장을 보내 주셔서 감사합니다. 복사하여 붙여 넣습니다. 그들은 애자일 웹 4에서 바로 잡았습니다. –

답변

0

당신의 시험 방법 이름이 올바르지 않은 것 같습니다 테스트합니다. 메서드 이름 앞에 test_을 추가해야한다고 생각합니다.

rake test test/controllers/orders_controller_test.rb -n test_should_get_new_order 
# or 
rake test test/controllers/orders_controller_test.rb - test_should_get_new_order 

레일 테스트 (들)을 실행 test 'some name' dotest_some_name에 변환합니다.

관련 문제