2017-02-02 10 views
0

をスタブ私はプロジェクトの中央に次のメソッドを追加しました:RSpecの - クラスのメソッド

def finishes_after_venue_shuts? 
    return unless venue && finish 
    day = regular_day ? regular_day : start.strftime('%a').downcase 
    finish > venue.openingtimes.where(default_day: day).pluck(:finish)[0] 
end 

これは、プロジェクト内で失敗する1000回の+のテストを引き起こしています。彼らは、次のエラーコードで失敗している:

ArgumentError: 
    comparison of ActiveSupport::TimeWithZone with nil failed 

私は次のようにメソッドを消ししようとしましたが、明らかに間違った何かをやっている:

before do 
    allow(Event.any_instance).to receive(:finishes_after_venue_shuts?).and_return(false) 
end 

アウトスタブのための正しい構文は何ですかメソッドを呼び出すだけで、コードを実行するのではなく、単にfalseを返すのですか?

ありがとうございます。

答えて

5

あなたは近かった:)

allow_any_instance_of(Event) 
    .to receive(:finishes_after_venue_shuts?) 
    .and_return(false) 
+1

作品は完全に - 多くの感謝アンドレイはすぐに答えを受け入れます。 – Mark

+0

@マークあなたは大歓迎です:) –

+0

@AndreyDeinekoどうすればfinishishes_after_venue_shuts?クラスメソッドですか? – TWONEKSONE

0

また、行うことができます。

Event.any_instance.stub(:finishes_after_venue_shuts).and_return(false) 
関連する問題