Jestで動的テストケースをループする方法
it/test
メソッドを使用してjestテストケースを動的に作成するには、次のようなテストケースがあります。
これが私が試したものです、しかし、ループ内のテストケースを実行せずにパスします。
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);
});
}
});
});
上から私のコメントに追加すると、これはうまく機能します
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);
});
}
});
これを行うための組み込みの方法があります:
https://jestjs.io/docs/en/api#1-testeachtable-name-fn-timeout
例えば.
test.each([[1, 1, 2], [1, 2, 3], [2, 1, 3]])(
'.add(%i, %i)',
(a, b, expected) => {
expect(a + b).toBe(expected);
},
);
ここで、2D配列の各内部配列は、引数としてテスト関数に渡されます。