2017-08-16 106 views
1

如何循环在Jest中的daynamic测试用例?Jest循环通过daynamic测试案例

我有像以下这样的测试案例我如何使用it/test方法创建笑话测试用例。

这是我曾尝试,但它只是没有经过在环excuting测试用例。

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); 
       }); 
      } 
     }); 

    }); 
+0

如果一个人通过,他们的旨意。所以你只需要一个积极的测试。理想情况下,在2个数字等于总和的情况下,您需要1个正数,并且在传递字符串或其他内容并抛出错误时失败。 TL/DR;你不需要4次测试都可以做同样的事情。 另外,您需要将循环测试用例移出父测试以使循环正常工作。 – sesamechicken

回答

2

添加到我上面的评论,这会工作得很好

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); 
     }); 
    } 
});