Сбой внедрения зависимостей при тестировании Angular Library - PullRequest
0 голосов
/ 05 февраля 2019

Я создал Angular Library, которая содержит простой компонент и службу, которая выполняет HTTP-вызов и получает результат, который затем используется в компоненте.

Все работы обнаруживаются, за исключением того факта, что тестыне пройдет с ошибкой с внедрением зависимости:

Error: StaticInjectorError(DynamicTestModule)[HttpClient]:
   StaticInjectorError(Platform: core)[HttpClient]:
   NullInjectorError: No provider for HttpClient!

Для справки вот мой код:

@Injectable({
  providedIn: "root"
})
export class MyService {
  public apiUrl = "https://apiurl";

  constructor(private http: HttpClient) {}

  getSomeData(key: string): Observable<string> {
    return this.http.get(
      `${this.apiUrl}/${key}`,
      { responseType: "text" }
    );
  }
}

И тест:

describe('MyService', () => {
  let injector : TestBed;

  beforeEach(() => {
    TestBed.configureTestingModule({
      providers: [
        MyService
      ],
      imports: [
        HttpClientTestingModule
      ],
    });

    injector = getTestBed();

  });

  it('should be created', () => {
    const service = injector.get(MyService);
    expect(service).toBeTruthy();
  });
});

МойЯ думаю, это связано с @ angular-devkit, но я могу ошибаться.И да, я перепробовал все варианты и даже попытался внедрить настоящий http-клиент, который тоже не работал.

1 Ответ

0 голосов
/ 06 февраля 2019

Я посмотрел ваш репозиторий и обнаружил, что вы фокусировались на файле ngx-pass-strength.service.spec.ts, но забыл, что вы не импортировали HttpClientTestingModule в тесте для вашего компонента.

ngx-pass-strength.component.spec.ts

TestBed.configureTestingModule({
  declarations: [ NgxPassStrengthComponent ],
  imports: [
    HttpClientTestingModule  <== add this
  ],
})
.compileComponents();
...