Как написать модульный тест в Typescript?

Я новичок в тестировании программного обеспечения, и мне было интересно, как написать модульный тест в 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) // Фактический и ожидаемый результат

У кого-нибудь есть совет, какую структуру модульного тестирования использовать?


13
23 567
1

Ответ:

Решено

есть несколько фреймворков для тестирования 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, я рекомендую установить следующие пакеты:

  • мокко // мокко как среда тестирования
  • @types/mocha // необходимо использовать мокко в машинописном тексте
  • chai // требуется для ожидания
  • @types/chai // необходимо использовать chai в машинописном тексте
  • поддержка исходной карты // добавить поддержку исходной карты в nodejs
  • ts-node // запускаем машинописный текст непосредственно в 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 может быть подходящей средой тестирования для вас.