我有一个调用spawn块的控制器动作
class MyController < ApplicationController
....
def send_product_mails
if @user.has_rights?
spawn_block(:nice => 19 ) do
@current_product.send_mail
end
end
end
...
end
我希望在@current_product上调用send_mail,但它告诉我它没有收到它。应该怎么做呢?
我的规格如此:
it "works with spawn" do
# Setup: create Product, Usersession (via UserSession.create(user))
get :send_product_mails, :id => product.id
MyController.any_instance.should_receive(:spawn_block).and_yield("sd")
end
我想要指定如果用户拥有权限,则会将某些内容传递给spawn_block
,否则不会传递任何内容。现在使用不同的trys(在MyController,MyController.any_instance,@ console上的测试中调用.should_receive
,有或没有and_yield这总是会出现错误,表明没有收到消息spawn_block
。(是的,我通过在if语句中添加puts-debug-output来检查权限是否正常。)
编辑:为问题提供更多上下文和代码,以及我尝试过的内容
答案 0 :(得分:1)
您需要在测试代码运行之前设置期望(对should_receive的调用)。