スレッドのリストでジョブ スケジューラに送信される一連のTasks (つまり、コマンド パターン) があります。Task特定のクラス(CreateTaskこの例では )を受け取っていることを確認したい。perform_tasks!それらは、スレッドに対処することになっているタスク オブジェクトのリストを取得するによってスケジュールされます。
これを rspec でテストするために、次のように設定しました。
it "should dispatch a Create Task" do
<... setup ... >
TaskScheduler.should_receive(:perform_tasks!) do |*args|
args.pop[0].should be_a CreateTask
end
<... invocation ... >
end
私は見つけましmatch_aray(...)たが、タイプではなくコンテンツをテストするため、これをうまくテストする方法を理解できないようです。これをテストするためのより短い方法またはより良い方法はありますか? 基本的に、次のようなものがあります:
TaskScheduler.should_receive(:perform_tasks!).with(array_containing_a(CreateTask))