我有可用的Angular测试设置。当我测试内部带有嵌套组件的组件时,这给了我错误,这就是为什么我需要模拟那些组件。
Angular Test文档向我们展示了模拟组件的其他方法-使用NO_ERRORS_SCHEMA。当我尝试使用此功能时(无论是使用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();
});
});
问题是-制作测试如何与NO_ERRORS_SCHEMA一起使用
我的机器-Ubuntu 18.04,节点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",
答案 0 :(得分: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';
我达到了预期的结果。