0

我有一个调用生成块的控制器操作

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如果用户拥有权限,则将某些内容传递给,否则不会。现在有不同的尝试(.should_receive在 MyController、MyController.any_instance、@controller 上调用测试,无论是否使用 and_yield,这总是会给出spawn_block未收到消息的错误。(是的,我通过添加在 if 语句中放置调试输出。)

编辑:为问题提供更多上下文和代码,以及我尝试过的内容

4

1 回答 1

1

您需要在被测代码运行之前设置期望(对 should_receive 的调用) 。

于 2013-04-08T07:31:17.983 回答