【发布时间】:2018-12-21 21:49:30
【问题描述】:
我创建了一个记录器自定义 NPM 包,并在我的组件中使用它,如下所示。我无法使用普通的 provide 和 useClass 方法在我的测试用例中模拟该服务。当我使用该方法时,我收到错误“失败:无法读取未定义的属性'get'”,这可能是因为我在 logger npm 包中使用了 http 服务。
// component code..
export class AppComponent {
import { LoggerService } from 'logger';
private loggerService: LoggerService;
constructor() {
this.loggerService = LoggerService.CreateLogger('my-app.component');
}
ngOnInit() {
this.loggerService.traceStarted('ngOnInit');
//my other codes
this.loggerService.traceCompleted('ngOnInit');
}
}
// test case code..
import { LoggerService } from 'logger';
describe('my app Component', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
{ provide: LoggerService , useClass: MockLoggerService },
})
}));
it('should create the app component', async(() => {
TestBed.compileComponents().then(() => {
const fixture = TestBed.createComponent(AppComponent );
const app = fixture.debugElement.componentInstance;
expect(app).toBeTruthy();
});
}));
【问题讨论】:
-
请包括
MockLoggerService的定义——这可能与这个模拟类的创建方式有关。 -
嗨,dmcgrandle 这是模拟服务代码导出类 MockLoggerService { CreateLogger () { return new MockLoggerService () } traceStarted() { } traceCompleted() { } info (){ } }
-
在记录器服务中我正在使用服务记录器 // this.logOptions = ServiceLocator.injector.get('logOptions');