11

Okay jako gość C# NUnit, może to być dziwne.test sparametryzowany jaśminem

Ale czy jaśmin pozwala na sparametryzowanie testu jednostkowego?

Nie jestem pewien, czy jest to sprzeczne z "deklaracją" i "tym", aby rzeczy były czytelne dla nie programistów.

Widziałem wtyczki innych firm, ale są one trochę stare, nie wiem, czy zostały dodane do jaśminu. Jeśli mam użyć wtyczki w

Aby pomóc każdemu, kto znajdzie to w przyszłości, powiedziano mi na forum jaśminowym Nie ma pierwszej klasy wsparcia dla sparametryzowanych testów w samej Jasmine.

+0

Możesz opublikować odpowiedź znalezioną na forum Jasmine jako odpowiedź na własne pytanie i zaakceptować ją. – TrueWill

Odpowiedz

3

ja nie pracowałem z jaśminu od dłuższego czasu, ale to było dość łatwo dodać parametryzowane testy:

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

z zaledwie kilku linii kodu Infrastruktura:

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

zależności od pożądana składnia i chęć zmiany domyślnych obiektów js, masz wiele opcji: http://blog.piotrturski.net/2015/04/jasmine-parameterized-tests.html

12

Na podstawie piotrek's answer i artykułu Parameterized testing in Javascript, można również użyć następujące podejście, które używa składni ES6:

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

Ja testowałem go z ram testu żartem, ale powinien działać z Jasmine, jak również.

+2

To też działa z Jasmine. – Shadow

Powiązane problemy