如何在打字稿中对模型接口进行单元测试?

How to unit test model interfaces in typescript?

export interface User {
    name: string;
}

如何对上述接口进行单元测试,以便 Karma 可以在代码覆盖率报告中显示它?

我已经尝试创建对象并声明一些属性,但没有成功。测试通过但 karma 没有在代码覆盖率报告中考虑它。

import { User } from "./user";

describe('User', () => {

    it('test', () => {
        const obj: User = {
            name: "xxx",

        }
        expect(obj.name).toEqual("xxx");
    });

});

你不能。这里没有要涵盖的代码:没有任何内容是可执行的。

并且接口只存在于编译时。它们在运行时不存在。

对于有类似问题的未来用户,我提出了以下用于测试界面的系统(我只将其用于特别古怪的界面,比如我自动生成的界面)。这绝对是一种解决方法,但如果未正确指定接口,它确实会导致我的构建失败。

首先,在 "test" 中,将具有预期字段和类型的对象转换为接口。例如,

interface MyInterface = { 
  id: number;
  createTime: Date;
}

test("MyInterface should have appropriate fields and types", () => {
  ({
    id: 3,
    createTime: new Date(),
  } as MyInterface);
})

然后,我添加了编译TypeScript的构建步骤,如果MyInterface被更改,它将出错。

tsc --noEmit

再次声明:我的测试中没有断言,因此它们不是真正的单元测试,这是一种解决方法。但是这个过程已经提醒了我几次问题,所以它达到了目的。