Вам необходимо указать макет ConfigService
, потому что это зависимость FirstService
. Самый простой способ сделать это с помощью шпиона.
Что-то вроде:
let firstService: FirstServicec;
let configServiceSpy: jasmine.SpyObj<ConfigService>;
beforeEach(() => {
const spy = jasmine.createSpyObj('ConfigService', ['getValue']);
TestBed.configureTestingModule({
providers: [
FirstService,
{ provide: ConfigService, useValue: spy }
]
});
// Inject both the service-to-test and its (spy) dependency
configService = TestBed.get(ConfigService);
configServiceSpy = TestBed.get(ValueService);
});
Затем вы можете использовать шпиона в тесте как:
it('#getValue should return stubbed value from a spy', () => {
const stubValue = 'stub value';
configServiceSpy.getValue.and.returnValue(stubValue);
expect(firstService.getValue())
.toBe(stubValue, 'service returned stub value');
expect(configServiceSpy.getValue.calls.count())
.toBe(1, 'spy method was called once');
expect(configServiceSpy.getValue.calls.mostRecent().returnValue)
.toBe(stubValue);
});
Для получения дополнительной информации, ознакомьтесь с этим разделом Angular Документы