PostObserverのafter_saveメソッドに外部サービスへのAPI呼び出しがいくつかあります。しかし、私はRspecでテスト中にafter_saveを呼びたくはありません。それを行う方法はありますか?ありがとうございました。Rspecでテスト中にobserver after_saveコールをスキップするにはどうすればよいですか?
それはRailsの3.1
PostObserverのafter_saveメソッドに外部サービスへのAPI呼び出しがいくつかあります。しかし、私はRspecでテスト中にafter_saveを呼びたくはありません。それを行う方法はありますか?ありがとうございました。Rspecでテスト中にobserver after_saveコールをスキップするにはどうすればよいですか?
それはRailsの3.1
スタブそれをです:彼らはシングルトンであるため、オブザーバーをスタブ
PostObserver.instance.stub(:after_save => true)
は望ましくない副作用を引き起こす可能性があります。 Rails 3.1の代替案は、あなたのテストでオブザーバーdisableです。例えば
Post.observers.disable :all do
..
end
古いバージョンのRailsのもう1つのオプションは、no-peeping-toms gemです。
これは、PostObserver.any_instance.stubs(:after_save => true)を使用していることを思い出させます。ありがとうございます:) – jchenjc