Какая польза от assert_predicate в MiniTest?
У меня проблемы с пониманием полезности assert_predicate
в минитесте. Чем он отличается от assert_equal?
Когда кто-то захочет использовать это утверждение? Я сталкивался с этим много раз, но не совсем понял его точное значение.
2 ответа
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 }
Документация для самого метода может ответить на ваш вопрос:
Для тестирования с предикатами. Например:
assert_predicate str, :empty?
Это действительно предназначено для спецификаций и передается assert_operator:
str.must_be :empty?
Это говорит о том, что причина заключается в поддержке .must_be
звонки, а не предоставление какой-либо конкретной выгоды по сравнению с assert_equal
или же assert
,