Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.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 3中的Shoulda测试:应以:success作为响应_Ruby On Rails_Ruby_Ruby On Rails 3_Shoulda - Fatal编程技术网

Ruby on rails Rails 3中的Shoulda测试:应以:success作为响应

Ruby on rails Rails 3中的Shoulda测试:应以:success作为响应,ruby-on-rails,ruby,ruby-on-rails-3,shoulda,Ruby On Rails,Ruby,Ruby On Rails 3,Shoulda,我在Rails 3中测试时遇到了一些问题。我目前正在将Rails2应用程序升级到Rails3。我正在使用shoulda进行测试。在我的功能测试中,我使用shoulda进行测试,GET应该能够成功响应 context "GET to :blame" do should "mark a song as blamed" do get :blame, :id => @song.id assert_equal Blame.count, 1 get :blame, :id

我在Rails 3中测试时遇到了一些问题。我目前正在将Rails2应用程序升级到Rails3。我正在使用shoulda进行测试。在我的功能测试中,我使用shoulda进行测试,GET应该能够成功响应

context "GET to :blame" do
  should "mark a song as blamed" do
    get :blame, :id => @song.id
    assert_equal Blame.count, 1
    get :blame, :id => @song.id
    assert_equal Blame.count, 2
  end
  should respond_with :success
end
在最后一行的下一行中,我在使用rake test执行功能测试时遇到以下错误:functionals:

  1) Error:
test: a visitor GET to :blame should respond with 200. (SongsControllerTest):
NoMethodError: undefined method `response_code' for nil:NilClass
    /Users/23tux/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activesupport-3.0.3/lib/active_support/whiny_nil.rb:48:in `method_missing'
    /Users/23tux/.rvm/gems/ruby-1.9.2-p136@rails3/gems/shoulda-2.11.3/lib/shoulda/action_controller/matchers/respond_with_matcher.rb:57:in `response_code'
    /Users/23tux/.rvm/gems/ruby-1.9.2-p136@rails3/gems/shoulda-2.11.3/lib/shoulda/action_controller/matchers/respond_with_matcher.rb:48:in `correct_status_code?'
    /Users/23tux/.rvm/gems/ruby-1.9.2-p136@rails3/gems/shoulda-2.11.3/lib/shoulda/action_controller/matchers/respond_with_matcher.rb:30:in `matches?'
    /Users/23tux/.rvm/gems/ruby-1.9.2-p136@rails3/gems/shoulda-2.11.3/lib/shoulda/assertions.rb:53:in `assert_accepts'
    /Users/23tux/.rvm/gems/ruby-1.9.2-p136@rails3/gems/shoulda-2.11.3/lib/shoulda/context.rb:324:in `block in should'
    /Users/23tux/.rvm/gems/ruby-1.9.2-p136@rails3/gems/shoulda-2.11.3/lib/shoulda/context.rb:382:in `call'
    /Users/23tux/.rvm/gems/ruby-1.9.2-p136@rails3/gems/shoulda-2.11.3/lib/shoulda/context.rb:382:in `block in create_test_from_should_hash'
我正在使用Ruby 1.9.2、Rails 3.0.3和Shoulda 2.11.3。 希望有人能帮助我

thx,
tux

两个应块分别运行,不会请求响应,因此会出现错误。您需要在设置块中发出请求,例如:

context "GET to :blame" do
  setup do
    get :blame, :id => @song.id
  end
  should "mark a song as blamed" do
    assert_equal Blame.count, 1
  end
  should respond_with :success
end