私のコントローラ クラスは ActionController::Base から継承しています。
Rails 2 と Ruby 1.9.3 を使用しています。
Perforce への呼び出しをスタブ化するために Mocha を使用しているため、テストは perforce への接続に依存しません。
Rails after_filter で、まだスタブ化されていないことを期待して、スタブ化されたメソッドの 1 つを呼び出します。通常のアプリケーションでは、Perforce 接続を解放します。
次のエラー メッセージが表示されます。
予期しない呼び出し: Api::BuildsController.perforce_service()
メソッドperforce_service
は私がスタブアウトしたメソッドです。Mocha によって既にスタブが解除された後に呼び出されていると思われますが、よくわかりません。after_filter に対して Mocha のスタブ解除はいつ行われますか? これをどのように設計すればよいですか?
pry でオブジェクトのメソッドを手動でスタブ化およびアンスタブ化しようとすると、unstub を呼び出した後でもメソッドを呼び出すことができますが、これは予期したことではありません。unstub は元のメソッドを復元するか、元のメソッドがなかった場合は未定義のメソッドの状態に復元することを期待しています。それは本当に何をしますか?
ノート:
Rails を使用する場合、Mocha のドキュメントでは、これを test_helper.rb に入れるように指示されています。
require 'mocha/mini_test'
ただし、これを Gemfile に追加して bundle install を実行すると、次のようになります。
gem 'mocha/mini_test'
次に、エラーが発生します。
Could not find gem 'mocha/mini_test (>= 0) ruby' in the gems available on this machine
ここで何が間違っていますか?