ruby - Rails rspec - 如何检查具有 ", if: :direct"子句的验证模型

标签 ruby validation rspec shoulda matcher

我有这个模型代码:

validates_presence_of :setting_id  
validates_presence_of :user_id  
validates_presence_of :topic_id, if: :direct?

我有这些 rspec 测试:

it { should validate_presence_of :setting_id }
it { should validate_presence_of :user_id }
it { should validate_presence_of(:topic_id).if(:direct?) } 

前 2 个测试工作正常。 最后一个给出错误:
undefined method 'if' for #<Shoulda::Matchers::ActiveModel::ValidatePresenceOfMatcher:0x007fda6a5c6268>

我如何为代码片段添加类似的测试以验证 (:topic_id).if(:direct?) 的最后存在?

最佳答案

从 shoulda-matchers 的源代码来看,似乎不支持 :if 条件。您将需要使用 direct? 方法的 stub 值手动测试它。

关于ruby - Rails rspec - 如何检查具有 ", if: :direct"子句的验证模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11420027/

相关文章:

ruby-on-rails - 自定义验证方法中的虚拟属性始终为 nil

arrays - 反转多维数组 - 函数式编程风格

ruby-on-rails - 如何配置 Guard 以跳过 Pry 提示并仅运行更改后的测试?

ruby-on-rails - 损坏的 RSpec 和 Cucumber 测试并且不确定在哪里

javascript - 我的 JavaScript 验证表单不工作

Javascript 验证输入字段?

ruby-on-rails - Rspec 测试实例变量与用户创建

ruby rspec 不能与 simplecov 一起使用

validation - Scalaz验证和ApplicativeBuilder限制

ruby-on-rails - 匿名 Controller 的 Rspec stubing View