Как написать модульный тест в Typescript? - PullRequest
1 голос
/ 21 мая 2019

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

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

1 Ответ

1 голос
/ 21 мая 2019

Есть несколько фреймворков для тестирования 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 и браузере (иногда я использую karma runner для тестирования браузера).

Если вы запускаете свои модульные тесты в nodejs, я рекомендую установить следующие пакеты:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...