2016-07-07 2 views
0

У меня есть этот код в моем тесте:не удается разрешить все параметры ошибки отклика в тесте Jasmine

import { 
    beforeEach, beforeEachProviders, 
    describe, xdescribe, 
    expect, it, xit, 
    async, inject 
} from '@angular/core/testing'; 
import { UserService } from './user.service'; 
import { Http, ConnectionBackend, Response, Headers, RequestOptions } from '@angular/http'; 
import { Observable }  from 'rxjs/Observable'; 
import { LocalStorage, SessionStorage, WEB_STORAGE_PROVIDERS } from 'h5webstorage'; 

beforeEachProviders(() => [ 
    UserService, Http, Response, Observable, ConnectionBackend, LocalStorage, Headers, RequestOptions 
]); 

describe('Service: UserService',() => { 

    it('testtest', inject([UserService], (service) => { 
    expect('test').toEqual('test'); 
    })); 
}); 

Когда я запускаю это я получаю следующее сообщение об ошибке:

Error: Cannot resolve all parameters for 'Response'(?). Make sure that all the parameters are decorated with Inject or have valid type annotations and that 'Response' is decorated with Injectable.

Является ли это из-за inproper инъекция зависимости в тесте? Как я могу сделать правильную инъекцию зависимости в тесте Жасмин?

ответ

2

Это должно исправить это для вас:

import { provide } from '@angular/core'; 
import { 
    beforeEach, 
    addProviders, 
    inject 
} from '@angular/core/testing'; 
import { UserService } from './user.service'; 

import {BaseRequestOptions, Http, Response, ResponseOptions, RequestMethod} from '@angular/http'; 

import {MockBackend} from '@angular/http/testing'; 

describe('Service: UserService',() => { 
    beforeEach(() => addProviders([ 
     UserService, 
      BaseRequestOptions, 
      MockBackend, 
      provide(Http, { 
       useFactory: (backend: MockBackend, defaultOptions: BaseRequestOptions) => { 
        return new Http(backend, defaultOptions); 
       }, 
       deps: [MockBackend, BaseRequestOptions] 
      }) 
     ])); 

    it('testtest', inject([UserService], (service) => { 
     expect('test').toEqual('test'); 
    })); 
}); 

Вы должны предоставить Http с завода. В противном случае вы не сможете издеваться над ответами.

+1

Спасибо, что сделал трюк, обратите внимание: это для углового RC4. –

+0

«Как это для RC4 @ stijn26? 'обеспечить' больше не является членом' @ angular/core/testing'. Это не работает. –

+1

импорт из «@ угловой/ядро»; –