2016-07-07 69 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的这测试中的依赖注入? 我如何在Jasmine测试中做适当的依赖注入?

回答

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

谢谢你做的窍门,注意:这是用于Angular RC4的。 –

+0

'RC4 @ stijn26怎么样? 'provide'不再是'@ angular/core/testing'的成员。这不起作用。 –

+1

从'@ angular/core'导入{provide}; –