2017-05-15 8 views
0

呼び出すインタラクタ( 'SaveRecord、PushToService')コードを実行せずに指定した2つのインタラクタを呼び出すために、オーガナイザインタラクタの下でテストします。rspecを使用してインタラクティブオーガナイザをテストするにはどうすればよいですか?

class Create 
    include Interactor::Organizer 

    organize SaveRecord, PushToService 
end 

すべてのインタラクタロジック(レコードを保存して他のサービスにプッシュする)の全体的な結果がテストされた例はほとんど見つかりませんでした。しかし、私は別のスペックの一部としてテストされるので、他のインタラクタのロジックを実行したくないです。

1. Is it possible to do so? 
2. Which way of testing(testing the overall result/testing only this particular 
    organizer interactor behavior) is a better practise? 

答えて

0

私は、含まれているインタラクタを実行することなく、インタラクタを含むインタラクタをテストする必要があると思います。私は道のスタブを見つけて、スタブにライン以下

と主催者をテストすることができる午前:

allow(SaveRecord).to receive(:call!) { :success } 
    allow(PushToService).to receive(:call!) { :success } 

テストするには:

it { expect(interactor).to be_kind_of(Interactor::Organizer) } 
it { expect(described_class.organized).to eq([SaveRecord, PushToService]) } 

は、それがしようとしているインタラク主催のソースファイルからcall! method & organized variableを発見しました内部的に電話して使用する。 call!メソッドをスタブし、organized変数をテストすることが私の要求を満たしています。

関連する問題