我的问题是我想模拟自定义验证方法,该方法从DB返回一些数据(ID列表-检查给定的ID是否在我的DB中)。
那么少说话,更多代码: 在我的时事通讯:: 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?
所以问题是什么对象要求我的自定义验证方法,以便我可以对其进行模拟?;]
答案 0 :(得分:0)
到目前为止,我了解的是可能存在一些eval / anynoumus类,因此,我将模拟在方法内部使用的AR而不是模拟此方法。
expect(Publisher).to receive_message_chain(:where, :present?).and_return(true)