11

Okay, wie ein C# NUnit-Typ könnte das seltsam sein.Jasmin parametrisierte Einheit Test

Aber erlaubt Jasmin einen parametrisierten Komponententest?

Ich bin mir nicht sicher, ob es gegen die "deklarieren" und "es" geht, um die Dinge für Nicht-Programmierer lesbar zu machen.

Ich habe einige Plugins von Drittanbietern gesehen, aber sie sind irgendwie alt, nicht sicher, ob es zu Jasmin hinzugefügt wurde. Wenn ich einen Stecker verwenden soll

Nur um jedem zu helfen, der das in der Zukunft findet, wurde mir auf Jasmin-Forum gesagt Es gibt keine erstklassige Unterstützung für parametrisierte Tests in Jasmine selbst.

+0

Sie könnten die Antwort, die Sie im Jasmine-Forum gefunden haben, als Antwort auf Ihre eigene Frage veröffentlichen und akzeptieren. – TrueWill

Antwort

3

Ich habe nicht mit Jasmin seit langer Zeit gearbeitet, aber es war ziemlich einfach parametrisierte Tests hinzuzufügen:

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

mit nur wenigen Zeilen von Infrastrukturcode:

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

je nach Ihre gewünschte Syntax und Bereitschaft, Standard-js-Objekte zu ändern, haben Sie viele Möglichkeiten: http://blog.piotrturski.net/2015/04/jasmine-parameterized-tests.html

12

Basiert auf piotrek's answer und den Artikel Parameterized testing in Javascript, könnten Sie auch folgende Vorgehensweise verwenden, die ES6 Syntax verwendet:

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

ich es mit der Jest Test-Framework getestet, aber es sollte auch mit Jasmin arbeiten.

+2

Das funktioniert tatsächlich auch mit Jasmine. – Shadow