`should be_invalid`和`should_not be_valid`之间是否有任何功能差异?

时间:2012-05-17 15:07:25

标签: ruby-on-rails validation rspec

两个调用都确保模型无效。

有任何功能差异吗?这两者之间是否存在流行的最佳做法?

3 个答案:

答案 0 :(得分:2)

rspec be_...匹配器中没有魔力。如果未在rspec中定义匹配器,则只调用be_之后带有?符号的任何方法名称。因此be_valid调用'activerecord / lib / active_record / validations.rb'中定义的方法valid?,'be_invalid'调用'activemodel / lib / active_model / validations.rb'中定义的invalid?。以下是后者的源代码:

def invalid?(context = nil)
  !valid?(context)
end

所以我猜答案可能不是。

答案 1 :(得分:0)

我没有发现任何功能差异。

“最佳实践”是使用规范中最具可读性和最具沟通性的内容。

答案 2 :(得分:0)

只是一个' icing'对于开发人员:)相同:

flag = true

if not flag
  ...
end

unless flag
  ...
end