Различия documented there.
Три интерфейса представляют разные стили выполнения утверждений. В конечном счете, они выполняют ту же задачу. Некоторые пользователи предпочитают один стиль над другим. Это, как говорится, есть также пара технических соображений следует выделить:
утверждает, и ожидать, что интерфейсы не изменяют Object.prototype
, в то время как должно делает. Таким образом, они являются лучшим выбором в среде, где вы не можете или не хотите менять Object.prototype
.
Интерфейсы assert и expect поддерживают пользовательские сообщения практически везде. Например:
assert.isTrue(foo, "foo should be true");
expect(foo, "foo should be true").to.be.true;
сообщения «Foo должен быть истинным» будет выводиться вместе с неисправным утверждением, если утверждение не удается. У вас нет возможности установить настраиваемое сообщение с интерфейсом should.
(Историческая справка: в течение долгого времени этот ответ заявил, что, чтобы получить специальное сообщение с expect
, вы должны использовать обходной путь Aurélien Ribon сообщил мне, что передает сообщение для expect
в качестве второго параметра работ. Следовательно, нет необходимости в обходном пути. Мне не удалось найти, какая версия Mocha начала предоставлять поддержку этому сообщению, и я не смог найти, какая версия документации задокументировала его в первый раз.)
Обратите внимание, что assert.isTrue(foo)
, expect(foo).to.be.true
и foo.should.be.true
все вывести следующие, если вы не используете обычай сообщение, и foo === 1
:
AssertionError: expected 1 to be true
Таким образом, хотя ожидать и должны взаимодействовать приятнее для чтения , он не похож на один интерфейс более естественно информативны, чем другой, когда утверждение не удается. Это сообщение, которое идентично для всех трех интерфейсов, не сообщает вам , что именно вы тестировали, только то, что вы получили, было 1
, но вы хотели true
. Если вы хотите узнать, что вы тестировали, вам нужно добавить сообщение.
Отличный ответ, он должен быть выбран :) –
Обратите внимание, что теперь ожидание может принимать сообщение в его конструкторе: 'ожидать (foo, 'some message'). To.be.true'. Это едва читаемо, поэтому вы часто устанавливаете сообщение в переменной. –
@ AurélienRibon Merci pour l'information. Я проверил несколько тестов с некоторыми старыми версиями Mocha, и я думаю, что этот параметр сообщения был фактически восстановлен, но они не документировали его. : -/Я обновлю этот ответ. – Louis