1

どちらの呼び出しでも、モデルが無効であることを確認します。

機能的な違いはありますか?2つの間に一般的なベストプラクティスはありますか?

4

3 に答える 3

2

rspecbe_...マッチャーに魔法はありません。マッチャが rspec で定義されていない場合は、メソッド名の後be_?符号が付いているものを呼び出すだけです。したがって、「activerecord/lib/active_record/validations.rb」で定義されたbe_validメソッドを呼び出し、「be_invalid」は「activemodel/lib/active_model/validations.rb」で定義されたメソッドを呼び出します。後者のソースコードは次のとおりです。valid?invalid?

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

したがって、答えはおそらくノーだと思います。

于 2012-05-17T17:14:19.327 に答える
0

私が認識している機能的な違いはありません。

「ベスト プラクティス」は、仕様を考慮して、最も読みやすく伝達しやすいものを使用することです。

于 2012-05-17T15:16:11.217 に答える
0

開発者のための単なる「アイシング」:) 同じ:

flag = true

if not flag
  ...
end

unless flag
  ...
end
于 2012-05-17T16:12:08.083 に答える