本文介绍了对具有NgZone依赖性的组件运行jasmine测试的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 我如何继续为以下组件运行茉莉花测试:How would I go ahead with running a jasmine test for the following component:@Component({ moduleId: module.id, selector: "testComp", template: "<div>{{value}}</div>",})export class TestComp { public value: string = "This is me"; constructor(public zone: NgZone) { this.zone.run(() => console.log("zone is here")); }}以下因无法解析所有参数而失败对于NgZone:The following fails with the Can't resolve all parameters for NgZone:describe("test", () => { let fixture; let component;beforeEach(async(() => { TestBed.configureTestingModule({ declarations: [TestComp], schemas: [NO_ERRORS_SCHEMA], providers: [NgZone] }).compileComponents;}));beforeEach(() => { fixture = TestBed.createComponent(TestComp); component = fixture.debugElement.componentInstance;});it("should check that the component is created", () => { expect(component).toBeTruthy();});})使用Angular 4.1.3。我找到了MockNgZone类@ https://no-shadow-angular-io.firebaseapp.com/docs/ts/latest/api/core/testing/MockNgZone-class.html 。但是对于这个特定版本,@ angular / core / testing似乎无法使用: using Angular 4.1.3. I found the MockNgZone class @ https://no-shadow-angular-io.firebaseapp.com/docs/ts/latest/api/core/testing/MockNgZone-class.html. But it seems unavailable in the @angular/core/testing for this particular version:任何人都知道我该怎么做才能测试这个组件?Anybody knows what I should do to test this component?问候推荐答案这有点神秘, MockNgZone 仍在源代码中,但已从公共API中删除。It's a bit of a mystery, MockNgZone is still in the source but removed from the public API.鉴于mock run()的简单实现Given the simple implementation of mock run()export class MockNgZone extends NgZone { ... run(fn: Function): any { return fn(); }我会用这个让你超越驼峰I would use this to get you over the humpconst mockNgZone = jasmine.createSpyObj('mockNgZone', ['run', 'runOutsideAngular']);mockNgZone.run.and.callFake(fn => fn());TestBed.configureTestingModule({ ... providers: [ { provide: NgZone, useValue: mockNgZone }, ] 这篇关于对具有NgZone依赖性的组件运行jasmine测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
09-25 20:16