【发布时间】:2017-01-22 21:41:48
【问题描述】:
我在使用 webpack 快速入门项目进行 angular 2 测试时遇到错误。
错误:没有字符串的提供者!在 config/karma-test-shim.js 中
我从未见过缺少 String 提供程序的错误。我发现它与服务构造函数中的私有 url:string 相关,但我该如何解决呢?
这是我的测试文件
describe('http.ts',()=>{
beforeEach(()=>{
TestBed.configureTestingModule({
providers:[
SbHttp,
MockBackend,
BaseRequestOptions,
{ provide: Http, useFactory: (backend: MockBackend, defaultOptions: BaseRequestOptions) => {
return new Http(backend, defaultOptions);
}, deps: [MockBackend, BaseRequestOptions]}
],
imports: [
HttpModule
]
})
});
afterEach(()=>{
TestBed.resetTestingModule()
});
it('get() should work', inject([SbHttp],(sbHttp:SbHttp)=>{
expect(true).toBeTruthy()
}))
})
这里是 SbHttp 服务
@Injectable()
export class SbHttp{
private baseUrl:string;
constructor( private url:string, private headers:Headers, private http:Http
){
this.baseUrl = utils.stripTrailingSlash(url)
}
}
如果我更改为私人网址:任何我都会收到此错误
无法解析 SbHttp 的所有参数:(?, Headers, Http)。
【问题讨论】:
标签: unit-testing angular dependency-injection angular2-services