1

以下を使用して Mocha 0.9.7 Rails プラグインをインストールしました。

$ script/plugin install git://github.com/floehopper/mocha.git

( http://mocha.rubyforge.org/の指示に従っただけです)

次に、機能テストで次の設定を定義しました

def setup
  @controller.expects(:logged_in?).returns(true)
  @controller.expects(:admin_user?).returns(true)
end

テストを実行すると、ff が生成されます。エラー:

NameError: uninitialized constant Mocha::Mockery::ImpersonatingName
    /test/functional/xxxx_controller_test.rb:x:in `setup'

その前にffが見えます。テスト ログの上部にあるエラー:

/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.3/lib/active_support/test_case.rb:12: warning: already initialized constant Mocha

これにより、Ruby または Rails のパスのどこかに古いバージョンの Mocha があると信じるようになりました。問題は、それが見つからないことです。

私の推測は正しいですか?もしそうなら、この古いバージョンの Mocha はどこにありますか? または、どこにあるかを知るにはどうすればよいですか?

4

1 に答える 1

1

http://selfamusementpark.com/blog/2009/07/30/rails233mochaconfusion/によると、私の推測は正しくありません。問題は、Mocha がテスト フレームワークの前にロードされていることです。これは前者が期待するものではありません。解決策は、RAILS_ROOT/vendor/plugin/mocha/init.rb を編集して ff をコメントアウトすることです。ライン:

require 'mocha'

次に、テスト フレームワークが事前にロードされていることを確認するために、テスト ファイルまたはヘルパーで Mocha を明示的に要求する必要があります。

于 2009-08-17T16:35:34.540 に答える