2017-08-16 58 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); 
     }); 
    } 
});