mercredi 14 septembre 2016

angular 2 rc7 - testing service - Error: No provider for String

I've getting an error in angular 2 testing using the webpack quickstart project.

Error: No provider for String! in config/karma-test-shim.js

I've never seen this error where the provider for String is missing. I figured out its related the private url:string in the services constructor but how do I resolve it?

Here's my testfile

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()

    }))
})

and here's the SbHttp service

@Injectable()
export class SbHttp{

    private baseUrl:string;

    constructor( private url:string, private headers:Headers, private http:Http
    ){
        this.baseUrl = utils.stripTrailingSlash(url)
    }
}

If I change to private url:any I'm getting this error

Can't resolve all parameters for SbHttp: (?, Headers, Http).

Aucun commentaire:

Enregistrer un commentaire