如何用Typescript编写单元测试?

时间:2019-05-21 15:03:06

标签: unit-testing frameworks

我是软件测试的新手,我想知道如何用Typescript编写单元测试。

我知道一些有关测试的知识,您拥有AsserassertEquals之类的方法,但是如何在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 个答案:

答案 0 :(得分:1)

有一些javascript测试框架,也可以在打字稿中使用,例如mocha或jest。您通常需要将类型安装为依赖项,例如

$ npm i -D @types/mocha

,但也有完全用testing frameworks编写的打字稿,但通常社区较小。因此,我建议从开玩笑或摩卡咖啡开始。我个人更喜欢将mocha与chai结合用作断言库。 我的测试如下:

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' );
} );

tests for logupts

Mocha在nodejs和浏览器中运行(有时我使用karma runner测试浏览器)。

如果您在nodejs中运行单元测试,我建议安装以下软件包:

  • mocha //将mocha作为测试框架
  • @ 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

如果您需要更多“开箱即用”的功能,我认为开玩笑可能是适合您的测试框架。