我刚刚开始学习TypeScript,并尝试了一些简单的应用程序(使用ts-jest)进行jest单元测试:
简单的app.ts模块:
function greet(person: string): string {
return `Hello, ${person}`;
}
exports.greet = greet;
简单的app.spec.ts代码:
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诊断程序现在可以工作,但是我仍然不知道我是否可以对错误的类型做任何事情并测试那些情况。任何建议表示赞赏。
答案 0 :(得分:1)
我应该收到类型错误吗?
不在这里。
您要测试的是TS文件的JS输出。
TS错误是编译时间错误。
我仍然不知道我是否可以使用错误的类型做任何事情并测试那些情况。
在运行时没有使用TypeScript进行类型检查,因为运行时不是 TypeScript,而是JavaScript。
如果要验证收到的某些对象,则应实现实际的检查功能。
可能有帮助: