Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么Rails无法运行单个rake测试?_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 为什么Rails无法运行单个rake测试?

Ruby on rails 为什么Rails无法运行单个rake测试?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在尝试解决我的测试数据库出现的问题。我目前正在跟随AgileWebDevelopment4,并正在阅读这些章节。我发现我的测试数据库中有3/4的数据是持久化的,我现在正试图找出这到底发生在哪里。我有一个orders\u controller\u test.rb文件,我正在尝试运行该文件 当我执行 rake测试:控制器 rake测试/controller/orders\u controller\u test.rb rake test 执行测试并持久化数据。我想一次一个测试一个测试,我正在执行

我正在尝试解决我的测试数据库出现的问题。我目前正在跟随AgileWebDevelopment4,并正在阅读这些章节。我发现我的测试数据库中有3/4的数据是持久化的,我现在正试图找出这到底发生在哪里。我有一个orders\u controller\u test.rb文件,我正在尝试运行该文件

当我执行

rake测试:控制器

rake测试/controller/orders\u controller\u test.rb

rake test
执行测试并持久化数据。我想一次一个测试一个测试,我正在执行这个命令:

rake test test/controllers/orders_controller_test.rb name_of_test
如导轨4中所示。执行此命令将产生以下结果:

正如您所看到的,它执行测试,但实际上并没有这样做。没有做出任何断言,这让我感到困惑/沮丧。我参考了这篇web文章,并尝试了其中的方法

为什么执行不正确。这是非常令人沮丧的,我怀疑这很简单。有人能帮我查明到底发生了什么吗?非常感谢您的帮助

-----编辑-----------

控制器测试

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
需要“测试助手”
类OrdersControllerTest
您的测试方法名称似乎不正确。我相信您必须在方法名称前面加上
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\u some\u name
以运行测试。

可能还会显示您的测试。感谢您的快速回复,我将复制并粘贴它们。它们直接取自敏捷Web 4