【发布时间】:2017-11-06 14:59:14
【问题描述】:
运行此代码时出现错误:
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [ SharedTestingModule,
TranslateModule.forRoot({
loader: { provide: TranslateLoader, useValue: mockTranslateLoader }
})],
declarations: [ RequestInfoComponent, StaticContentComponent ],
providers: [{ provide: EnvironmentService, userValue: EnvironmentService }]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(RequestInfoComponent);
component = fixture.componentInstance;
componentHtml = fixture.debugElement.nativeElement;
environmentService = fixture.debugElement.injector.get(EnvironmentService);
});
问题是fixture.detectChanges()。如果我删除 fixture.detectChanges() 那么一切正常,但我应该用它运行代码。我无法删除它。
错误是:
TypeError: this.enviromentService 未定义
这是我在组件中的代码:
import { Component, OnInit } from '@angular/core';
import { EnvironmentService } from 'app/shared/environment.service';
@Component({
selector: 'app-request-info',
templateUrl: './request-info.component.html',
styles: []
})
export class RequestInfoComponent implements OnInit {
urlPrefix: string;
constructor(private environmentService: EnvironmentService) { }
ngOnInit() {
this.urlPrefix = this.environmentService.getWebContentUrlPrefix();
}
}
【问题讨论】:
-
EnvironmenService 的模拟在哪里?如果您不使用一个,那么为什么要添加一个 useValue(顺便说一句,它是 useValue 而不是 userValue)?
标签: javascript angular jasmine karma-runner