13

そのため、Angular2 のバージョン RC5 では、 を廃止し、HTTP_PROVIDERSを導入しましたHttpModule。私のアプリケーション コードでは、これは正常に機能していますが、Jasmine テストを変更するのに苦労しています。

これが私の仕様で現在行っていることですが、HTTP_PROVIDERS は非推奨になっているため、今何をすべきですか? HTTP_PROVIDERS の代わりに提供する必要があるものはありますか? RC5の世界でこれを行う正しい方法は何ですか?

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

  //other code here...
});

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

2 に答える 2

11

非推奨になった HTTP_PROVIDERS は、HttpModule is RC5 に置き換えられました。

describe ブロック内で、以下のように必要なインポートと providers 配列属性を使用して TestBed.configureTestingModule を追加します。

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

これが、ユニット サービス テストを RC5 で動作させる方法です。次のリリース候補と最終バージョンの間でこれを変更する必要がないことを願っています。あなたが私のような人なら、おそらくリリース候補の間で進行中の非推奨の量に不満を感じているでしょう。早く事態が安定しますように!

于 2016-08-25T15:49:22.253 に答える
2

RC5 より前のコードから RC6 に更新するときに、同様の問題が発生します。上記の Joe 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();
    });
...
于 2016-09-12T09:27:55.887 に答える