mercredi 15 juillet 2020

Angular, how to create a spy object on service variable

I want to test my component which use a service. I dont want to use npm libraries or create mock files. I want to use spy object.

Let assume the service looks like this:

@Injectable({
    providedIn: root
} 
export class MyService {
  isReady: Subject<boolean>;
  // etc more code
} 

Inside my spec.ts file:

// Includes

describe('myComponent', () => {
// Some boilerplate code
let mockMyService;

beforeEach(() => {

    mockMyService = jasmine.createSpyObj('MyService', ['isReady']);
});

TestBed.configureTestingModule({
  declarations: [
   // Some declarations. 
],
providers: [
   { provide: MyService, useValue: mockMyService} 
}]);

beforeEach(() => {
   mockMyService.isReady.and.returnValue(of({}));
});

As you see, i want to mock a variable(Subject) of a service. But my code above doesnt work.

How to do that? Thanks is in advance.

Aucun commentaire:

Enregistrer un commentaire