web-dev-qa-db-fra.com

Comment tester le constructeur de classe dans Jest

Disons que j'ai une classe comme celle-ci:

class SomeClass {
  constructor(a, b) {
    this.a = a;
    this.b = b;
  }
}

Comment puis-je tester via Jest que le constructeur a été initialisé correctement? Dire... this.a = a et this.b = b et non l'inverse?

Je sais que je peux exécuter toBeCalledWith mais cela ne me permettra pas de vérifier la logique du constructeur. Je pensais aussi à faire mockImplementation mais dans ce cas cela semble inutile car je vais réécrire la logique, ou je ne connais peut-être pas toutes les nuances de la création de maquettes

7
Le garcon

Créez simplement une instance de l'objet et vérifiez-la directement. Comme il les définit sur this, ce sont essentiellement des valeurs publiques:

it('works', () => {
  const obj = new SomeClass(1, 2);
  expect(obj.a).toBe(1);
  expect(obj.b).toBe(2);
});
12
samanime

Vous pouvez simplement vérifier les propriétés de l'instance après avoir initialisé la classe. Fondamentalement, c'est la même chose que vous pouvez tester les effets secondaires de n'importe quelle fonction.

const a = Symbol();
const b = Symbol();    
const classInstance = new SomeClass(a, b);
expect(classInstance.a).toBe(a);
expect(classInstance.b).toBe(b);
1
Liviath