MiniTest でのassert_predicateの用途は何ですか?

概要

MiniTest でのassert_predicateの有用性を理解するのに問題があります。 Assert_equal との違いは何ですか?このアサーションはどのような場合に使用する必要があるでしょうか?何度も目にしましたが、正確な意味はわかりませんでした。

解決策

assert_equal は、期待値と実際の値が等しいかどうかを確認します。

assert_equal "Bender", robot.name

assert_predicate は、ターゲット オブジェクトの名前付きメソッドを呼び出し、結果が真実であれば渡します。

assert_predicate robot, :bender?

このテストは次のように簡単に作成できます。

assert robot.bender?

ただし、assert_predicate は状況によってはもう少し表現力が豊かになる可能性があり、複数の述語条件をチェックする場合にはもう少し優れたものになる可能性があります。

roles = %i(admin? publisher? operator?)
roles.each {|role| assert_predicate user, role }