关于单元测试:ts-jest:忽略TypeScript类型错误

ts-jest: TypeScript type errors are ignored

我刚刚开始学习TypeScript,并尝试了一些简单的应用程序(使用ts-jest进行了jest单元测试):

简单的app.ts模块:

1
2
3
4
5
function greet(person: string): string {
  return `Hello, ${person}`;
}

exports.greet = greet;

简单的app.spec.ts代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const greetObject = require('../app');

greetObject.greet(1);

describe('greet function', () => {
  it('should return greeting', () => {
    expect(greetObject.greet('Dude')).toEqual('Hello, Dude');
  });
  it('should throw type exception', () => {
    const spy = jest.spyOn(greetObject, 'greet');
    greetObject.greet(1);
    /** @todo what should happen ? */
  });
});

问题是:我应该接收类型错误吗? 实际上,我在这里没有收到任何错误。

但是,如果我在app.ts文件中用错误的参数类型调用greet,则整个测试套件将失败。

我在TypeScript单元测试中缺少什么吗?

UPD。 将require转换为ES6导入。 TypeScript诊断程序现在可以工作,但是我仍然不知道我是否可以对错误的类型做任何事情并测试那些情况。 任何建议表示赞赏。


should I receive type error or not ?

不在这里。

您正在测试的是TS文件的JS输出。

TS错误是编译时间错误。

I still don't know if I can do anything with wrong types and test those situations.

由于运行时不是TypeScript,而是JavaScript,因此在运行时不会使用TypeScript进行类型检查。

如果要验证收到的某些对象,则应实现实际的检查功能。

也许有帮助:

如何在TypeScript的运行时检查对象类型?