web-dev-qa-db-fra.com

Boucle à travers des cas de test dynamiques

Comment puis-je parcourir les cas de test dynamiques dans Jest?

J'ai des cas de test comme les suivants, comment puis-je créer dynamiquement un cas de test jest en utilisant it/test méthodes.

Voici ce que j'ai essayé , mais ça passe juste sans excuter les cas de test dans la boucle.

const mymodule = require('mymodule');
    let testCases = [
        {q: [2, 3],r: 5},
        {q: [1, 2],r: 3},
        {q: [7, 0],r: 7},
        {q: [4, 4],r: 8}
    ];
    describe("Test my Math module", () => {
        test("test add sub module", () => {
            for (let i = 0; i < testCases.length; i++) {
                let item = testCases[i];
                let q = item.q;
                let expected = item.r;
                it(`should  add ${q[0]},${q[1]} to ${expected}`, () => {
                    let actual = mymodule.add(q[0] + q[1]);
                    expect(actual).toBe(expected);
                });
            }
        });

    });
14
Mehari

Ajoutant à mon commentaire d'en haut, cela fonctionnera très bien

import jest from 'jest';
import { sumModule } from './';

const tests = [
  {x: 1, y: 2, r: 3}, 
  {x: 3, y: 4, r: 7}
];

describe('Adding method', () => { 
    for(let i = 0; i < tests.length; i++){
      it('should add its params', () => {
        const actual = sumModule(tests[i].x, tests[i].y);
        expect(actual).toBe(tests[i].r);
      });
    }
});
16
sesamechicken

Il existe une méthode intégrée pour ce faire:

https://jestjs.io/docs/en/api#1-testeachtable-name-fn-timeout

par exemple.

test.each([[1, 1, 2], [1, 2, 3], [2, 1, 3]])(
  '.add(%i, %i)',
  (a, b, expected) => {
    expect(a + b).toBe(expected);
  },
);

où chaque tableau interne du tableau 2D est transmis en tant qu'arguments à la fonction de test.

14
justin