Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何在typescript中对模型接口进行单元测试?_Angular_Typescript_Jasmine_Karma Jasmine_Karma Coverage - Fatal编程技术网

Angular 如何在typescript中对模型接口进行单元测试?

Angular 如何在typescript中对模型接口进行单元测试?,angular,typescript,jasmine,karma-jasmine,karma-coverage,Angular,Typescript,Jasmine,Karma Jasmine,Karma Coverage,我如何对上面的接口进行单元测试,以便Karma可以在代码覆盖率报告中显示它 我已经尝试创建对象并断言一些属性,但没有成功。测试通过,但因果报应没有在代码覆盖报告中考虑。 export interface User { name: string; } 你不能。这里没有代码可以覆盖:没有任何东西是可执行的 接口只在编译时存在。它们在运行时不存在。对于有类似问题的未来用户,我提出了以下用于测试接口的系统(我只使用特别古怪的接口,比如我自动生成的接口)。这绝对是一个解决方法,但是如果接口没有正

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

我已经尝试创建对象并断言一些属性,但没有成功。测试通过,但因果报应没有在代码覆盖报告中考虑。

export interface User {
    name: string;
}

你不能。这里没有代码可以覆盖:没有任何东西是可执行的


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

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

首先,在“测试”中,将具有预期字段和类型的对象强制转换到接口中。比如说,

import { User } from "./user";

describe('User', () => {

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

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

});
然后,我添加了编译TypeScript的构建步骤,如果
MyInterface
发生更改,则会出错

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

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

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

你不能。这里没有代码可以覆盖:没有任何东西是可执行的。接口只在编译时存在。它们在运行时不存在。我没有使用Karma,但您是否尝试过使用
Karma typescript
运行测试?它可能会考虑像这样不可访问的代码。
tsc --noEmit