В предыдущей теме для верификации результата теста полученное значение сравнивалось с ожидаемым результатом:
if(result!==expectedResult){ throw new Error(`Expected ${expectedResult}, but got ${result}`); }
Подобное сравнение является довольно тривиальным и фактически используется во многих тестах с небольшими изменениями. И специально чтобы упростить верификацию результатов в тестах в Node.js определен специальный встроенный модуль assert. Кроме того, есть различные библиотеки, которые еще называют Assertions и которые служат той же цели: should.js, expect.js и т.д. Но в данном случае мы рассмотрим работу с модулем Assert.
Функция assert.strictEqual() сравнивает два значения и принимает следующую форму:
assert.strictEqual(actual, expected[, message])Параметры actual и expected представляет сравниваемые значения. Если они не равны, то генерируется ошибка. В качестве необязательного параметра message можно передать сообщение об ошибке. Например, определим следующий файл-модуль operations.js:
module.exports.multiply = function(x,y){ return x * y; }Здесь определена простейшая функция умножения двух чисел. Протестируем ее и для этого определим следующий файл operations.test.js:
const assert = require("assert"); const operations = require("./operations"); it("should multiply two numbers", function(){ const expected = 15; const result = operations.multiply(3, 5); assert.strictEqual(result, expected); });Если оба значения будут равны, то при запуске теста мы опять же увидим в консоли, что тесты пройдены. Если же значения не будут равны, то мы увидим красные маркеры с сообщениями об ошибке:
c:\app> npm test > testapp@1.0.0 test > mocha *.test.js ✔ should multiply two numbers 1 passing (5ms) c:\app>Определенно вариант с функцией
assert.strictEqual
проще, чем если бы мы сравнивали вручную два значения и сами генерировали ошибку с некоторым сообщением.В противоположность этой функции функция assert.notStrictEqual() генерирует ошибку, если оба значения равны:
it("should multiply two numbers", function(){ const expected = 15; const result = operations.multiply(3, 5); assert.notStrictEqual(result, expected); });