首页 > 解决方案 > 打字稿项目中的单元测试目标

问题描述

我发现在许多打字稿项目中,单元测试的目标是ts源代码,而不是js从源代码构建的ts代码。

大多数时候,我们应该测试如果用户将错误的参数传递给函数会发生什么。为此,我们应该对构建的js代码进行测试,因为 IDE 已经对ts源代码进行了类型断言,我们没有机会传入错误的参数。

最后,我的问题是单元测试是否有官方指南或最佳实践?

标签: typescriptunit-testing

解决方案


是否有单元测试的官方指南或最佳实践?

这个问题可能超出了本网站的范围。

大多数时候,我们应该测试如果用户将错误的参数传递给函数会发生什么。为此,我们应该对构建的 js 代码进行测试

首先,我不同意这个前提。如果用户传入错误的参数,您唯一需要担心会发生什么的地方是模块的边界(用户将在此处传入输入)。任何内部类和函数都不必担心这一点。

其次,如果你想测试如果用户传入错误的参数会发生什么,你仍然可以在 TypeScript 中使用该any类型进行测试。例如,如果我有一个功能:

function getStringLength(str: string): number {
  if (typeof str !== 'string') {
    return undefined;
  }
  return x.length;
}

然后我可以测试它:

it('Should throw an error on a non-string type', () => {
  expect(getStringLength(1 as any)).toBeUndefined();
});

推荐阅读