Есть ли способ добавить описательное сообщение Assert в логический тест ZIO?

У меня есть пара Booleans, которые я хочу протестировать, например

assert(g8Exists, equalTo(true)) &&
assert(projectExists, equalTo(true)) &&
assert(testenvExists, equalTo(true)) ...

В случае неудачи все, что я получаю, это:

false did not satisfy equalTo(true)

Не знаю, какая строка вышла из строя. Есть ли способ добавить описательное сообщение Assert. Например:

assert(g8Exists, equalTo(true), "g8Exists")

Или предпочтительнее:

assertTrue(g8Exists, "g8Exists")

Приведет к

false did not satisfy equalTo(true) - g8Exists

Или есть способ лучше проверить Booleans в целом?


person pme    schedule 03.01.2020    source источник
comment
Как насчет создания ADT вместо использования логических значений?   -  person Yuval Itzchakov    schedule 03.01.2020
comment
@MarioGalic спасибо подойдет :)   -  person pme    schedule 03.01.2020


Ответы (1)


Да! Для этого вы можете использовать метод label для Assertion или его символический псевдоним ??.

assert(g8Exists, isTrue ?? "g8Exists") &&
assert(projectExists, isTrue ?? "projectExists") &&
assert(testenvExists, isTrue ?? "testenvExists")

Если предположить, что первое утверждение не выполнено, вы получите красивое сообщение об ошибке, в котором точно указано, какое утверждение не удалось.

false did not satisfy isTrue()
false did not satisfy (isTrue() ?? "g8Exists")
person Adam Fraser    schedule 03.01.2020
comment
@ adam-fraser - и как всегда уже есть хорошее решение - спасибо;) - person pme; 03.01.2020