2016-07-07 20 views
0

でレスポンスエラーのためにすべてのパラメータを解決できません:私はこれを実行するとは、私は私のテストでは、このコードを持っているジャスミンテスト

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はどうですか? 'provide'は' @ angular/core/testing'のメンバーではありません。これは動作していません。 –

+1

'@ angular/core'からインポート{提供}します。 –

関連する問題