ruby-on-rails – Rspec 3 Rails 4带参数的模拟链式方法调用
发布时间:2020-12-17 02:24:06 所属栏目:百科 来源:网络整理
导读:我试图模拟以下行: publishers = AdminUser.where(can_publish: true).pluck(:email) 我试过了: relation = instance_double('AdminUser::ActiveRecord_Relation')allow(AdminUser).to receive(:where).with(can_publish: true).and_return(relation)allow
我试图模拟以下行:
publishers = AdminUser.where(can_publish: true).pluck(:email) 我试过了: relation = instance_double('AdminUser::ActiveRecord_Relation') allow(AdminUser).to receive(:where).with(can_publish: true).and_return(relation) allow(relation).to receive(:pluck).with(:email).and_return(['email','email2']) 不幸的是,期望似乎并不匹配.不会抛出任何错误,但不会嘲笑这些方法. 我也试过,然后采取工作. allow(AdminUser).to receive(:where).with(can_publish: true).and_return([object,object2]) 但是,这种期望太过生成,并且当它与代码中调用更高的另一个匹配时会失败. 我怎么能嘲笑这条线? 解决方法
虽然您可以按照建议使用receive_message_chain,但需要考虑这种复杂性,以表明您的类的界面可以更清晰.
RSpec docs say考虑任何使用receive_message_chain代码的气味. 一种更好的方法是在AdminUser上定义一个名为publisher_emails的类方法,它可以更简单地存根,并且还提高了代码的可读性. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |