Ruby on rails 使用rspec验证存在性

Ruby on rails 使用rspec验证存在性,ruby-on-rails,rspec,Ruby On Rails,Rspec,这是我第一次在rails中进行测试,我觉得这应该是一个非常简单的验证 在组_spec.rb中 it { should validate_presence_of(:enc_key) } it { should validate_uniqueness_of(:enc_key).case_insensitive } 在我的模型中 validates :enc_key, :presence => true, uniqueness: {:case_sensitive => false} 当

这是我第一次在rails中进行测试,我觉得这应该是一个非常简单的验证

在组_spec.rb中

it { should validate_presence_of(:enc_key) }
it { should validate_uniqueness_of(:enc_key).case_insensitive }
在我的模型中

validates :enc_key, :presence => true, uniqueness: {:case_sensitive => false}
当我运行rspec时,我会

 2) Group should require enc_key to be set
    Failure/Error: it { should validate_presence_of(:enc_key) }
      Expected errors to include "can't be blank" when enc_key is set to nil, got errors: ["owner There is no owner associated with this group. (nil)", "name can't be blank (nil)", "name is
too short (minimum is 4 characters) (nil)", "stripped_name can't be blank (nil)"]

错误列表是从其他验证生成的,我尝试过编写自定义验证,但也没有成功

我猜您在这里使用的是shoulda matchers,我看不出您的测试有什么问题

我认为您应该在模型中使用
validates
方法,而不是
validate
方法<代码>验证用于声明您在此处指定的验证规则类型<代码>验证用于声明自定义验证

因此,请在您的模型中尝试以下方法:

validates :enc_key, presence: true, uniqueness: {case_sensitive: false}


shoulda matchers设计用于处理其他有效记录。它们改变了记录的各个方面,并测试验证是否报告了适当的错误。如果记录中已经有错误,这种方法通常不起作用

您尚未显示规范的其余部分,但我收集的
主题
为零。您需要将
subject
设置为记录的有效实例


有关这方面的相关讨论,请参阅。

对不起,这是我的打字错误。我正在使用验证,但测试仍然失败。至于该不该找媒人,我想是的。实际上是其他人编写了测试用例。