0

我的问题是我想模拟我的自定义验证方法,该方法从数据库返回一些数据(id 列表 - 检查给定的 id 是否在我的数据库中)。

少说话,多代码:在我的 Newsletter::Contract::Create 类中

validation do
  configure do
    config.messages_file = "config/error_messages.yml"
    def publisher_exists?(value)
      Publisher.where(id: value).present?
    end
  end
  required(:publisher_id).filled(:publisher_exists?)
end

在测试中,我尝试运行

expect(Newsletter::Contract::Create).to receive(:publisher_exists?).and_return(true)

但显然我收到

Newsletter::Contract::Create does not implement: publisher_exists?

所以问题是我的自定义验证方法需要什么对象,所以我可以模拟它?;]

4

1 回答 1

0

到目前为止,我的理解是可能有一些 eval/anynoumus 类,所以我不会模拟这个方法,而是将在方法内部使用的 AR 存根。 expect(Publisher).to receive_message_chain(:where, :present?).and_return(true)

于 2018-11-16T15:28:06.920 回答