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

クラス名とファイル名を次のように変更します。

ParticipationsControllerTest

参加者_controller_test.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

コントローラーは存在しますか?私の場合、コントローラーが存在しなかったため、レールはコントローラーをロードせず、エラーが発生しました。

于 2012-01-29T01:38:12.830 に答える