NoMethodError:未定义的方法'post'

时间:2014-07-20 16:07:27

标签: ruby-on-rails ruby rake

我正在使用Rails 2.3.18对应用程序进行一些测试

运行rake时,第一次测试失败。 测试文件是:

require 'test_helper'

class ItemTest < ActiveSupport::TestCase
  test 'add_item' do
    assert_equal 0, Item.find(:all).size
    post :add_item, :item => {:name => 'Name of item',
                              :comment => ''}
    assert_response :redirect
    assert_redirected_to :action => 'index'
    assert_equal 1, Item.find(:all).size
  end
end

post :add_item ...是发生错误的地方。

错误消息是:

NoMethodError: undefined method `post' for #<ItemTest:0x7f0645ce1790>

对此进行研究已经提出了一些建议,其中没有一个有效。

  1. 包括&#39; actionpack&#39;在gemfile中。这并没有任何区别。

  2. 使用该行: 测试前it "some test" do。 这已将错误更改为另一个NoMethodError,表示&#39;它&#39;是未定义的。

  3. 有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您的课程应该继承自ActionController::TestCase,而不是ActiveSupport::TestCaseActionController::TestCase为测试提供get / post / etc方法。