Привет, мне нужно передать два аргумента моему конструктору при тестировании с использованием 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, пример ниже