В ScalaTest существует какая-либо разница между `should`,` can`, `must`

Просто начал использовать ScalaTest, и мне это очень нравится.

Просто прочитав документы, до сих пор мне не удалось выяснить, существует ли какая-либо существенная разница между can, should и must предложения для FlatSpec.

В частности, мне интересно, обрабатывается ли отказ must по-другому, чем один из should, или просто "синтаксический сахар", чтобы сделать тесты лучше самодокументированными.

Ответы

Ответ 1

should и must являются одинаковыми семантически. Но это не о лучшей документации, в основном, вплоть до личных стилистических предпочтений (например, я предпочитаю must).

can немного отличается. Вы не можете (nomen omen) использовать его непосредственно в качестве помощника, он доступен только в тестовом дескрипторе. Цитата из FlatSpec:

Примечание: вы можете использовать must или can, а также в FlatSpec. Для Например, вместо этого нужно "поп..., вы могли бы написать" must "pop... или он может" поп...

(то же самое относится к WordSpec и двум соответствующих классов приборов)

Обратите внимание, что в течение короткого времени (в ScalaTest 2.0.x я думаю) использование must было устаревшим, однако в 2.1.0 решение было отменено:

Воскрешенные MustMatchers в пакете org.scalatest. Изменено устаревание предупреждение для org.scalatest.matchers.MustMatchers предложить использовать org.scalatest.MustMatchers вместо org.scalatest.Matchers, которые было предложение в 2.0. Извините за то, что пользователи, которые должен быть уже при обновлении до 2.0.