2014-12-02 55 views
0

我想解決一個問題,我有我的測試數據庫。我目前正在跟隨敏捷Web開發4並通讀各章。在我發現我的測試數據庫持續數據的四分之三的某處,我正試圖找出究竟發生了什麼。我有一個我試圖運行的orders_controller_test.rb文件。爲什麼Rails無法運行單個rake測試?

當我執行

rake test:controllers

rake test test/controllers/orders_controller_test.rb

rake test 

測試執行和數據被保留。我想一次去測試一個測試,並且正在執行此命令來執行此操作:

rake test test/controllers/orders_controller_test.rb name_of_test 

如Rails 4指南中所示。這個命令的執行產生這樣的:

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 2014-12-02 21:59:44

+0

感謝您的快速回復,我會複製並粘貼它們。他們直接從敏捷Web 4獲取 – 2014-12-02 22:01:01

回答

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運行測試(多個)。