javascript - Testa privat metod med spyOn och Jest
Mina funktioner i Calculator-klassen är privata och jag kan inte testa på det här sättet,
describe('calculate', function() {
it('add', function() {
let result = Calculator.Sum(5, 2);
expect(result).toBe(7);
});
it('substract', function() {
let result = Calculator.Difference(5, 2);
expect(result).toBe(3);
});
});
min klass:
export default class calculator {
private Sum(a: number, b: number): number {
let c = a + b;
return c;
}
private Difference(a: number, b: number): number {
let c = a - b;
return c;
}
}
hur kan jag modifiera detta test genom att använda spyOn på privata metoder?
tack för all hjälp
Svar #1
Den enklaste lösningen, för att spionera på din 'Sum'-metod i Calculator-klassen, som jag kom på skulle vara:
jest.spyOn(calculator as any, 'Sum').<do-something>();
Svar #2
I Typescript tillåter det dig inte att testa den privata metoden. Så du behöver något för att komma runt detta beteende. Vad du kan göra är något liknande detta
let result = (Calculator as any).Sum(2,3);
expect(result).toBe(5);
Jag hoppas att det kommer att lösa ditt problem.
