транспортир - разница между toBe(truth) и toBeTruthy()

как следует из названия - есть ли разница между (например)

 expect(element).isDisplayed().toBeTruthy();

а также

 expect(element).isDisplayed().toBe(truth);

и если да то какая разница?

Благодарность


person user2880391    schedule 24.02.2015    source источник


Ответы (2)


Многие вещи Truthy (т.е. все, что не является одним из: false, 0, "", undefined, null, NaN). Так

expect('apple').toBeTruthy();

проходит. Но:

expect('apple').toBe(true);

терпит неудачу.

При этом, если вы знаете, что тестируете логическое значение, для меня использование toBeTruthy выглядит лучше.

person hankduan    schedule 24.02.2015
comment
спасибо, но не уверен, что понял. так что «toBeTruthy ()» для логического значения? а что тогда "быть(истинно)"? - person user2880391; 24.02.2015
comment
Нет, и toBeTruthy, и toBe могут быть чем угодно. toBe проходит только в том случае, если это прямое совпадение, но toBeTruthy проходит для любого истинного значения. Возможно, прочитайте это: safaribooksonline.com/library/view/ javascript-тестирование-с/ - person hankduan; 24.02.2015
comment
Если вы знаете, что результат должен быть true, вы можете вообще не тестировать его. Смысл тестирования заключается в том, чтобы справляться с неожиданными ситуациями. Таким образом, используйте toBe(true) так же, как вы всегда использовали бы === вместо ==. - person Vincent; 29.09.2016

Хотя это не новый вопрос, я подумал, что он заслуживает точного ответа.

expect('apple').toBe(true);

оценивается как «яблоко» === true. (фактическое === ожидаемое в коде жасмина) я бы предпочел

expect('apple').toBe('apple');

Таким образом, вы знаете, что не получаете «апельсин». С другой стороны.

expect('apple').toBeTruthy();

оценить «яблоко» как !! «яблоко» (!! фактическое значение в коде жасмина). Так что не не "яблоко"

person jamesRH    schedule 05.08.2015