我有一组Task
s (即命令模式),它们被发送到线程列表中的作业调度程序。我想验证它是否接收到某个类别的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))