簡體   English   中英

為什么Rails無法運行單個rake測試?

[英]Why does Rails fail to run a single rake test?

我正在嘗試解決我的測試數據庫存在的問題。 目前,我與Agile Web Development 4並肩學習這些章節。 在大約3/4的某個地方,我發現測試數據庫正在持久存儲數據,並且目前正試圖找出發生這種情況的確切位置。 我有一個要運行的orders_controller_test.rb文件。

當我執行

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指南中所示。 執行此命令將產生以下結果:

在此處輸入圖片說明

如您所見,它執行測試,但實際上並未執行。 沒有斷言,這使我感到困惑/沮喪。 我已經參考了這篇網絡文章,並嘗試了其中的方法。 運行Rails測試的不同方法

為什么這不能正確執行。 這非常令人沮喪,我懷疑這很簡單。 有人可以幫忙找出可能發生的情況嗎? 幫助將不勝感激。

- - -編輯 - - - - - -

控制器測試

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

您的測試方法名稱似乎不正確。 我相信您必須在方法名稱前加上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

Rails將test 'some name' do轉換為test_some_name來運行測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM