11

好吧,作爲一個C#NUnit的傢伙,這可能很奇怪。茉莉花參數化單元測試

但茉莉允許參數化單元測試嗎?

我不確定它是否違背了「聲明」和「它」使非程序員可讀的東西。

我已經看到一些第三方插件,但他們有點老,不知道它是否已被添加到茉莉花。 如果我需要使用插件

只是爲了幫助任何在未來發現此問題的人,我已被告知jasmine論壇Jasmine本身沒有對參數化測試的一流支持。

+0

你可以發佈你在Jasmine論壇上找到的答案,作爲你自己問題的答案並接受它。 – TrueWill

回答

3

我沒有因爲長時間用茉莉工作,但它是很容易添加參數測試:

['abc', 3, 
    'ab', 4, 
    '', 0]. 
it('should contain string length', function(string, expected){ 
    expect(string.length).toBe(expected); 
}); 

與基礎結構代碼,只需幾行:

Array.prototype.it = function(description, testCaseFunction) { 
    _(this) 
     .chunk(testCaseFunction.length) 
     .each(function(innerArray){ 
       it(description + ' ' + JSON.stringify(innerArray), function(){ 
        testCaseFunction.apply(this, innerArray); 
       });  
     }) 
     .value(); 
}; 

視您希望更改默認js對象的語法和意願,您有很多選擇:http://blog.piotrturski.net/2015/04/jasmine-parameterized-tests.html

12

基於piotrek's answer和文章Parameterized testing in Javascript,你也可以使用下面的方法,它使用ES6語法:

[ 
    ['abc', 3], 
    ['ab', 2], 
    ['', 0], 
].forEach(([string, expectedLength]) => { 
    it(`should return length ${expectedLength} for string "${string}"`,() => { 
    expect(string.length).toBe(expectedLength); 
    }); 
}); 

我已經用玩笑測試框架測試,但它應該與茉莉花正常工作。

+2

這確實與茉莉花一起工作。 – Shadow