I have a problem trying to unit test an angular service. I want to verify that this service is properly calling another service that is injected into it.
Lets say I have this ServiceToTest that injects ServiceInjected:
ServiceToTest .service.ts
@Injectable()
export class ServiceToTest  {
    constructor(private _si: ServiceInjected) {}
    public init() {
      this._si.configure();
    }
}
ServiceInjected.service.ts
@Injectable()
export class ServiceInjected {
    constructor() {}
    public configure() {
    /*Some actions*/
    }
}
With these services, now I write my unit test:
const serviceInjectedStub = {
  configure(): void {}
}
describe('ServiceToTest service Test', () => {
  beforeEach(() => {
    TestBed.configureTestingModule({
      providers: [ServiceToTest ,
        { provide: ServiceInjected, useValue: serviceInjectedStub }]
    });
  });
  
  it('should be initialize the service injected', inject([ServiceToTest],
    (tService: ServiceToTest) => {
      spyOn(serviceInjectedStub, 'configure');
      tService.init();
      expect(serviceInjectedStub.configure).toHaveBeenCalled();
    }));
I expected my test to be positive, however I receive the following error:
Expected spy configure to have been called.
On the other hand, it works OK if I set the injected service public in this way:
private _si: ServiceInjected by public si: ServiceInjected