Angular 角度2-为什么ng测试忽略TS编译错误?

Angular 角度2-为什么ng测试忽略TS编译错误?,angular,angular-cli,angular2-testing,Angular,Angular Cli,Angular2 Testing,我在测试(规范文件)中创建了一些TS错误,例如: 让num:number=“dsds” 我运行了ng测试,测试成功了。。。为什么? 我希望在终端中出现一些TS错误 在运行测试时,我需要做什么来启用此行为(TS捕获错误) 详情: @角度/cli:1.0.0-beta.31 节点:6.9.2 操作系统:win32 x64 @角度/普通:2.4.7 @角度/编译器:2.4.7 @角度/核心:2.4.7 @角度/形状:2.4.7 @angular/http:2.4.7 @角度/平台浏览器:2.4.7

我在测试(规范文件)中创建了一些TS错误,例如:
让num:number=“dsds”

  • 我运行了ng测试,测试成功了。。。为什么?
  • 我希望在终端中出现一些TS错误
  • 在运行测试时,我需要做什么来启用此行为(TS捕获错误)
  • 详情:
    • @角度/cli:1.0.0-beta.31
    • 节点:6.9.2
    • 操作系统:win32 x64
    • @角度/普通:2.4.7
    • @角度/编译器:2.4.7
    • @角度/核心:2.4.7
    • @角度/形状:2.4.7
    • @angular/http:2.4.7
    • @角度/平台浏览器:2.4.7
    • @角度/平台浏览器动态:2.4.7
    • @角度/路由器:3.4.7
    • @角度/cli:1.0.0-beta.31
    • @角度/编译器cli:2.4.7

如果您想让
ng测试在编译时捕获它,您必须为此元素编写一个单独的测试用例。您可以使用,例如,
RegExp
对象来检查它是否是一个数字

it('should be a number', () => {
  expect(component.num).toMatch(/\d+/);
});

编辑

如果声明以下变量:

someNumberVar: number = "thisIsNotANumber";
TypeScript会将其捕获为错误,但在编译应用程序时,而不是在测试时!通过在控制台中键入
ng serve
,您可以自己检查它,设置此变量并开始编译。您将收到以下错误:

类型“string”不能分配给类型“number”


如果你想测试你的应用程序,你必须为你想测试的每个元素写一个单独的测试用例,正如我上面提到的。

你能给我们看看你的测试代码吗?当然,但这确实是一个很明显的错误,因为它与TS编译错误有关<代码>它('should create the app',async(()=>{const fixture=TestBed.createComponent(AppComponent);const app=fixture.debugElement.componentInstance;let num:number=“dsds”;expect(app.toBeTruthy();}))mm但为什么?这是一个TS编译错误,不是逻辑错误或运行时异常。@user241530编辑了我的帖子。所以你说的是,当你运行测试时,类型脚本编译错误不会被捕获,仅在构建/运行应用程序时?@user241530如果您没有为其制作测试用例-否。这取决于您的期望值。num可能是一个只包含数值的字符串。如果是这种情况,您应该使用
string
作为类型。如果可以是字符串或数字,请使用类型
string | number
等。换句话说,类型应该反映您期望它在运行时接受的值的域。