angular - NO_ERRORS_SCHEMA 停止 Karma 测试以 Angular 工作

标签 angular karma-jasmine karma-runner

我有有效的 Angular 测试设置。当我测试内部嵌套组件的组件时,这会给我错误,这就是为什么我需要模拟这些组件。

Angular 测试文档向我们展示了模拟组件的其他方法 - 使用 NO_ERRORS_SCHEMA。当我尝试使用它时(无论是在 headless 模式还是使用 Chrome 的正常模式下),我的测试都会停止工作。信息看起来像这样

24 03 2019 18:48:45.750:INFO [launcher]: Starting browser Chrome
24 03 2019 18:48:49.599:WARN [karma]: No captured browser, open 
http://localhost:9876/    
24 03 2019 18:48:49.644:INFO [HeadlessChrome 73.0.3683 (Ubuntu 
0.0.0)]: Connected on socket cQvumAWhGFfzQWh0AAAA with id 98993378

在浏览器模式下,我只能看到信息:

Karma v4.0.1 - connected
Chromium 73.0.3683 (Ubuntu 0.0.0) is idle 

当我在没有 [NO_ERRORS_SCHEMA] 的情况下运行测试时,我可以看到我的测试结果,这就是错误与此模式设置相关的原因。

我的组件规范设置:

import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { ContactComponent } from './contact.component';
import { NO_ERRORS_SCHEMA } from '@angular/compiler/src/core';

describe('ContactComponent', () => {
  let component: ContactComponent;
  let fixture: ComponentFixture<ContactComponent>;

  beforeEach(async () => {
    TestBed.configureTestingModule({
      declarations: [ContactComponent],
      schemas: [NO_ERRORS_SCHEMA]
    })
    .compileComponents();
  });

  beforeEach(() => {
    fixture = TestBed.createComponent(ContactComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeFalsy();
  });
});

问题是 - make tests 如何使用 NO_ERRORS_SCHEMA

我的机器 - Ubuntu 18.04,Node 11.11

"jasmine-core": "~3.3.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "^4.0.1",
"karma-chrome-launcher": "~2.2.0",
"karma-cli": "~2.0.0",
"karma-coverage-istanbul-reporter": "^2.0.5",
"karma-jasmine": "~2.0.1",
"karma-jasmine-html-reporter": "^1.4.0",

最佳答案

我似乎没有找到答案。在 devtools 控制台内的 Chrome 测试浏览器窗口中,我发现了一个提示 -

Uncaught Error: Cannot find module 'tslib'
at webpackEmptyContext

用谷歌搜索,给我答案 - NO_ERRORS_SCHEMA 的导入声明不正确。

import { NO_ERRORS_SCHEMA } from '@angular/compiler/src/core';

我将其更改为以下内容后获得了预期结果:

import { NO_ERRORS_SCHEMA } from '@angular/core';

关于angular - NO_ERRORS_SCHEMA 停止 Karma 测试以 Angular 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55326796/

相关文章:

html - 多行按钮组 Bootstrap 中按钮的圆 Angular

Angular 路由给出了不正确的组件

javascript - VisualSearch.js : Is there a vanilla Javascript alternative to VisualSearch. js(多面搜索)?

typescript - "Q js is undefined."尝试解决测试方法中 aurelia-breeze 的 promise (karma+jasmine)

javascript - 如何以编程方式更改 Material Calendar <mat-calendar> 中的月份

angular - Karma 测试 Angular Seed 项目 System.JS 路径错误

javascript - Angular 2 最终发布路由器单元测试

javascript - 聊天应用程序 - 测试两个客户端之间的交互

javascript - Angular 单元测试 : Calling a method defined in another controller is throwing 'undefined' is not an error

javascript - Angular - 单元测试按键