2016-08-11 46 views
12

因此,在Angular2的版本RC5中,他們不贊成HTTP_PROVIDERS並引入了HttpModule。對於我的應用程序代碼,這工作正常,但我努力在我的Jasmine測試中進行更改。NG2 RC5:HTTP_PROVIDERS已棄用

以下是我目前在我的規格中所做的工作,但由於HTTP_PROVIDERS已棄用,現在應該做什麼?有什麼我需要提供而不是HTTP_PROVIDERS?在RC5世界中做到這一點的正確方法是什麼?

beforeEach(() => { 
    reflectiveInjector = ReflectiveInjector.resolveAndCreate([ 
    HTTP_PROVIDERS, 
    ... 
    ]); 

    //other code here... 
}); 

it("should....",() => { ... }); 
+1

HTTP_PROVIDERS已被棄用,取而代之'HttpModule'。 – micronyks

+0

偉大的,我得到的那部分。現在,你如何在Jasmine測試中使用它? :) – hartpdx

+0

我有同樣的確切問題,甚至打開一個錯誤,因爲這是一個主要功能,我不知道它現在可以如何使用... :( – born2net

回答

11

現在不推薦使用的HTTP_PROVIDERS替換爲HttpModule是RC5。

在您的描述塊,以及必要的進口和供應商陣列添加TestBed.configureTestingModule屬性,象下面這樣:

describe("test description",() => { 
    beforeEach(() => { 
     TestBed.configureTestingModule({ 
      imports: [HttpModule], 
      providers: [SomeService] 
     }); 
    }); 
    it("expect something..",() => { 
     // some expectation here 
     ... 
    }) 
}) 

這是我得到了我的單元測試的服務與RC5工作,希望這億韓元」不得不在下一個候選版本與最終版本之間進行更改。如果你和我一樣,你可能會因發行候選人之間的棄用數量而感到沮喪。我希望事情很快穩定下來!

+0

從'@ angular/http';'執行'import {HttpModule}。 –

2

從RC5代碼更新到RC6時遇到類似的問題。上述擴大喬W公司的答覆,我更換了這段代碼:

import { ReflectiveInjector, provide } from '@angular/core'; 
import { HTTP_PROVIDERS, RequestOptions } from '@angular/http'; 

export function main() { 
    describe('My Test',() => { 
    let myService: MyService; 

    beforeAll(() => { 
     let injector = ReflectiveInjector.resolveAndCreate([ 
     HTTP_PROVIDERS, 
     provide(RequestOptions, { useValue: getRequestOptions() }), 
     MyService 
     ]); 
     myService = injector.get(MyService); 
    }); 

    it('should be instantiated by the injector',() => { 
     expect(myService).toBeDefined(); 
    }); 
... 

與此RC6代碼(這,我想,也應該爲RC5工作):

import { TestBed } from '@angular/core/testing'; 
import { HttpModule, RequestOptions } from '@angular/http'; 

export function main() { 
    describe('My Test',() => { 
    let myService: MyService; 

    beforeAll(() => { 
     TestBed.configureTestingModule({ 
     imports: [HttpModule], 
     providers: [ 
      { provide: RequestOptions, useValue: getRequestOptions() }, 
      MyService 
     ] 
     }); 
     myService = TestBed.get(MyService); 
    }); 

    it('should be instantiated by the testbed',() => { 
     expect(myService).toBeDefined(); 
    }); 
...