Angular 2 beforeEachProviders не работает с инжектором в тестах

Когда я пытаюсь пройти Injector к beforeEachProviders в тестах я получаю следующую ошибку.

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

Код, который я использую

import { Injector } from 'angular2/core';

describe(() => {
  beforeEachProviders(() => [Injector]);
});

Чего не хватает? Что я должен дать провайдерам, чтобы иметь возможность его создавать?

1 ответ

Решение

Я не думаю, что вам нужно настроить Injector в ваших провайдерах для теста. Экземпляр этого класса может быть непосредственно введен в ваш тест...

Вот что у меня есть в одном из моих тестов (нет "явного" провайдера для Injector) и я могу добавить его в тест позже:

import {it, describe, expect, beforeEach, inject, beforeEachProviders} from 'angular2/testing';
import {HTTP_PROVIDERS, XHRBackend, Response, ResponseOptions} from 'angular2/http';
import {MockBackend, MockConnection} from 'angular2/http/testing';
import {provide, Injector} from 'angular2/core';
import {HttpService} from "./http-service";

describe('HttpService Tests', () => {
  beforeEachProviders(() => {
    return [
      HTTP_PROVIDERS,
      provide(XHRBackend, { useClass: MockBackend }),
      HttpService
    ];
  });

  it('Should return a list of dogs', inject(
         [XHRBackend, HttpService, Injector],
         (mockBackend, httpService, injector) => {
    console.log(injector); // <----- Not null
  });
});
Другие вопросы по тегам