is it possible to use Jasmine unit testing framework\'s spyon method upon a classes private methods?
The documentation gives this example but can this be flexivble for a
Let say sayHello(text: string)
is a private method. You can use the following code:
// Create a spy on it using "any"
spyOn<any>(fakePerson, 'sayHello').and.callThrough();
// To access the private (or protected) method use [ ] operator:
expect(fakeperson['sayHello']).toHaveBeenCalledWith('your-params-to-sayhello');
any
.[]
operator.Just add a generic parameter < any> to the spyon() function:
spyOn<any>(fakePerson, 'sayHello');
It works on perfectly !
spyOn<any>(fakePerson, 'sayHello');
expect(fakePerson['sayHello']).toHaveBeenCalled();
by adding <any>
to spyOn you remove it from typescript type check.
you also need to use array index notation in order to access a private method (sayHello) in the test expect