1

下面的代码:

  context "should destroy participation" do
    setup do
      @p = Factory.create :participation
      delete :destroy, :id => @p.id.to_param
    end

    should_redirect_to(:controller => 'configuration', :action => 'edit')   
  end

给我下面的错误,知道为什么吗?

RuntimeError: @controller is nil: make sure you set it in your test's setup method.
    /test/functional/participation_controller_test.rb:30:in `__bind_1279893888_614853'
    /Applications/RubyMine 2.0.2.app/rb/testing/patch/testunit/test/unit/ui/testrunnermediator.rb:36:in `run_suite'
    /Applications/RubyMine 2.0.2.app/rb/testing/patch/testunit/test/unit/ui/teamcity/testrunner.rb:215:in `start_mediator'
    /Applications/RubyMine 2.0.2.app/rb/testing/patch/testunit/test/unit/ui/teamcity/testrunner.rb:191:in `start'
4

3 回答 3

2

您测试的非复数名称,但控制器是 ParticipationsController:

/test/functional/participation_controller_test.rb

将类名和文件名更改为:

参与控制器测试

参与控制器测试.rb

于 2011-01-28T17:09:12.763 回答
1

您必须包装should_redirect_to成一个函数,现在它在 ruby​​ 加载类时执行。

context "should destroy participation" do
  setup do
    @p = Factory.create :participation
  end

  should "redirect ...." do
    delete :destroy, :id => @p.id.to_param
    should_redirect_to(:controller => 'configuration', :action => 'edit')
  end 
end
于 2010-07-23T14:11:51.007 回答
0

控制器存在吗?在我的情况下,控制器不存在,然后 rails 没有加载控制器并向我抛出你得到的错误。

于 2012-01-29T01:38:12.830 回答