自角度2.0.0-rc.4发布(change log)以来,beforeEachProviders
和provide
都已弃用。我的问题是如何在我的组件中注入我的模拟服务。
这是我的beforeEach
函数,它创建了一个覆盖了提供者的ComponentFixture
:
beforeEach(async(inject([TestComponentBuilder], (tcb)=> {
builder = tcb;
})));
beforeEach(async(inject([], ()=> {
return builder
.overrideProviders(MenubarComponent,[provide(MenubarService, {useClass:MenubarServiceMock})])
.createAsync(MenubarTestComponent)
.then((_fixture:ComponentFixture<any>)=> {
fixture = _fixture;
})
})));
这种方法很好但正如我所说provide
已弃用。
在不使用provide()的情况下,正确的方法是什么?
根据Günter的回答我改变了界限:
.overrideProviders(MenubarComponent,[provide(MenubarService, {useClass:MenubarServiceMock})])
为:
.overrideProviders(MenubarComponent,[{provide:MenubarService, useClass:MenubarServiceMock}])
它有效!
答案 0 :(得分:1)
来自更改日志
import {addProviders, inject} from '@angular/core/testing';
describe('my code', () => {
beforeEach(() => {
addProviders([MyService]);
});
it('does stuff', inject([MyService], (service) => {
// actual test
});
});
而不是provide()
使用
{provide: MenubarService, useClass:MenubarServiceMock}