Как добавить аргументы в конструктор службы для тестирования с использованием jasmine testbed.configureTestingModule - PullRequest
1 голос
/ 11 июля 2019

Привет, мне нужно передать два аргумента моему конструктору при тестировании с использованием testBed.configureModule

Вот мой base.service.spec.ts

import { TestBed } from '@angular/core/testing';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { BaseService } from '@shared/services/base/base.service';
import { HttpHeaders, HttpClient } from '@angular/common/http';

describe('BaseService', () => {

    let baseService: BaseService<any>, httpClientTestingModule: HttpClientTestingModule;

    beforeEach(() => {

        TestBed.configureTestingModule({
            imports: [HttpClientTestingModule],
            providers: [BaseService,
                { provide: HttpClientTestingModule, useValue: httpClientTestingModule },
                { provide: String, useValue: 'base' }
            ]
        })

        baseService = TestBed.get(BaseService)
        //httpClientTestingModule = TestBed.get(HttpClientTestingModule)

    })

    const GET_BASE_URL = 'getBaseURL'
    //Test getBaseUrl
    it(`${GET_BASE_URL} should return a string`, () => {

        baseService.getBaseURL().then((base) => {
            if (base) {
                //PASSED if base is a string
                expect(base).toEqual(jasmine.any(String), 'Result is not a string')
            } else {
                fail(`${GET_BASE_URL} failed: string was empty or null`)
            }
        }, (error) => {
            fail(`${GET_BASE_URL} failed: promise was not resolved`)
        })

    })

    const GET_PROVIDER_HEADER = 'getProviderOnlyHeader'
    //Test getProviderOnlyHeader
    it(`${GET_PROVIDER_HEADER} should return HttpHeaders`, () => {

        let result = baseService.getProviderOnlyHeader()

        expect(result).toEqual(jasmine.any(HttpHeaders), 'Result is not a HttpHeader')
    })

})

А вот частьмой base.service.ts

export class BaseService<T> {

  nativeStorage: NativeStorage;

  //A single object
  _item = new BehaviorSubject<T>(null);

  //A list of items
  _list = new BehaviorSubject<T[]>(null);

  get item() {
    return this._item.asObservable();
  }

  getCurrentItem() {
    return this._item.getValue()
  }

  getCurrentList() {
    return this._list.getValue()
  }

  get list() {
    return this._list.asObservable();
  }

  constructor(public http: HttpClient, public controllerName: string) {

    this.nativeStorage = new NativeStorage();

    this.getBaseURL().then((base) => {
      BASE = base
    })
  }
}

Я знаю, что есть похожие вопросы, но я не могу найти решение Как должна выглядеть моя установка testBed?

Требуются дополнительные детали, дайте мне знать, спасибозаранее

Также появляется это сообщение об ошибке

Ошибка: невозможно разрешить все параметры для BaseService: (?,?).

Также базасервис - это суперкласс, но на самом деле он не является сервисом. Базовые аргументы сервиса вводятся в методе super, пример ниже

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...