Assert

Последнее обновление: 24.11.2023

В предыдущей теме для верификации результата теста полученное значение сравнивалось с ожидаемым результатом:

if(result!==expectedResult){
	throw new Error(`Expected ${expectedResult}, but got ${result}`);
}

Подобное сравнение является довольно тривиальным и фактически используется во многих тестах с небольшими изменениями. И специально чтобы упростить верификацию результатов в тестах в Node.js определен специальный встроенный модуль assert. Кроме того, есть различные библиотеки, которые еще называют Assertions и которые служат той же цели: should.js, expect.js и т.д. Но в данном случае мы рассмотрим работу с модулем Assert.

equal

Функция 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);
});
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850