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.

Relaterade artiklar