对具有NgZone依赖性的组件运行jasmine测试 [英] Running jasmine tests for a component with NgZone dependency
问题描述
我如何继续为以下组件运行茉莉花测试:
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似乎无法使用:
< img src =https://i.stack.imgur.com/7gMev.pngalt =在此处输入图像说明>
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 hump
const mockNgZone = jasmine.createSpyObj('mockNgZone', ['run', 'runOutsideAngular']);
mockNgZone.run.and.callFake(fn => fn());
TestBed.configureTestingModule({
...
providers: [
{ provide: NgZone, useValue: mockNgZone },
]
这篇关于对具有NgZone依赖性的组件运行jasmine测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!