Я новичок в тестировании программного обеспечения, и мне было интересно, как написать модульный тест в Typescript.
Я кое-что знаю о тестировании, что у вас есть такие методы, как Asser
или assertEquals
, но как это сделать в Typescript и нужно ли обращать внимание на статически типизированные классы?
Я хотел бы протестировать эту функцию
function calculateAverage(...numbers: number[]): number {
let sum = 0
for (var n in numbers) {
sum += n
}
return sum/numbers.length
}
Итак, какую структуру я должен использовать для создания теста, который выглядит следующим образом:
assertEquals(calculateAverage(1,2,3), 2)
// Фактический и ожидаемый результат
У кого-нибудь есть совет, какую структуру модульного тестирования использовать?
есть несколько фреймворков для тестирования javascript, которые вы также можете использовать в машинописи, например mocha или jest. Вам часто нужно установить типы как зависимость, например
$ npm i -D @types/mocha
но есть и полностью машинописные написанные фреймворки для тестирования, но чаще имеют меньшее сообщество. Так что рекомендую начать с шутки или мокко. Я лично предпочитаю мокко в сочетании с чаем в качестве библиотеки утверждений. Мои тесты выглядят так:
it( 'logStack === false', async () => {
const customOptions: LogUpTsOptions = { quiet: true, logStack: false };
const logger = new LogUpTs( customOptions );
expect( await logger.error( new Error( 'first' ) ) ).to.eql( '[ERROR] first' );
expect( await logger.log( 'second' ) ).to.eql( '[LOG] second' );
} );
Mocha работает в nodejs и браузере (иногда я использую карма бегун для тестирования браузера).
Если вы запускаете свои модульные тесты в nodejs, я рекомендую установить следующие пакеты:
$ TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' mocha --opts ./mocha.opts
мой файл mocha.opts:
--require ts-node/register
--require source-map-support/register
--recursive
src/**/*.spec.ts
Если вам нужно что-то более «работающее из коробки», я думаю, что jest может быть подходящей средой тестирования для вас.