编写单元测试 TypeScript :使用 Jest、 Mocha 和 与 Chai 和组合 Sinon

Unit test 是软件开发的重要组成部分,保证源代码的准确性和可靠性。 借助 TypeScript,您可以使用 和 等 unit test 流行框架 ,结合诸如 等断言库 和诸如. Jest Mocha Chai Sinon

unit test 以下是使用这些工具和库编写s 的详细指南 TypeScript:

 

Jest

Jest 是一个广泛使用的用于编写 unit test s TypeScript 和 JavaScript 的框架。 它提供了简单的语法和强大的功能,例如模拟、快照测试和覆盖率报告。

要开始使用 s 编写 unit test s Jest,您需要 Jest 通过运行以下命令通过 npm 或 YARN 进行安装:

npm install jest --save-dev

然后,您可以创建扩展名为 .spec.ts 或 .test.ts 的测试文件并编写测试用例。

例如:

// math.ts  
export function add(a: number, b: number): number {  
  return a + b;  
}  
  
// math.spec.ts  
import { add } from './math';  
  
test('add function adds two numbers correctly',() => {  
  expect(add(2, 3)).toBe(5);  
});  

 

Mocha

Mocha 是一个灵活的 TypeScript JavaScript 测试运行框架。 它支持清晰的语法和各种类型的测试,例如 unit test 集成测试和功能测试。

要使用 Mocha in TypeScript,您需要通过npm或yarn安装 MochaChai 运行以下命令:

npm install mocha chai --save-dev

然后,您可以创建测试文件并编写测试用例。

例如:

// math.ts  
export function add(a: number, b: number): number {  
  return a + b;  
}  
  
// math.spec.ts  
import { expect } from 'chai';  
import { add } from './math';  
  
describe('add function',() => {  
  it('should add two numbers correctly',() => {  
    expect(add(2, 3)).to.equal(5);  
  });  
});  

 

Chai

Chai 是一个流行的断言库,用于在 unit test s 中编写断言。 它提供了清晰灵活的语法,允许您断言源代码的结果。 您可以使用 Chai 或 Jest 来 Mocha 在测试用例中编写断言。

例如:

import { expect } from 'chai';  
import { add } from './math';  
  
it('add function should add two numbers correctly',() => {  
  expect(add(2, 3)).to.equal(5);  
});  

 

Sinon

Sinon 是一个流行的模拟和间谍库,用于模拟和跟踪测试用例中的行为。 您可以使用 SinonJestMocha 模拟和跟踪对象和函数中的活动。

例如:

import { expect } from 'chai';  
import { add } from './math';  
import sinon from 'sinon';  
  
it('add function should call console.log with the correct result',() => {  
  const consoleSpy = sinon.spy(console, 'log');  
  add(2, 3);  
  expect(consoleSpy.calledWith(5)).to.be.true;  
  consoleSpy.restore();  
});  

 

Jest or MochaChai and结合使用 Sinon 可以让您在 中构建强大且灵活的 unit test s TypeScript。 Jest 通过使用、 MochaChai、 和 的方法和功能 Sinon,您可以在软件开发过程中确保源代码的准确性和可靠性。