2016-07-26 9 views
-1

Ich habe eine kleine Bibliothek, für die ich die Testfälle schreiben möchte. Bitte beachten Sie, dies ist das erste Mal, dass ich Komponententests schreiben werde :)Testen eines Moduls gemusterten JavaScript-Code mit Mokka

Meine Bibliothek ist eine kleine Diagrammbibliothek, die d3.js benutzt, um ein Diagramm zu zeichnen. Es ist eine Zeile Code 200 geschrieben unter Verwendung von Modul prasseln wie folgt aus (nur ein Beispiel):

var graph = (function() { 
var a, b, c; 

function x() { 
    //uses a 
} 

function y() { 
    uses a, b and possibly calls x 
} 

function plotChart() { 
    //uses c; 
}, 

function plotAxis() { 
    //uses a,b 
} 

function validate() { 
    //validates values 
} 

return { 
    createChart: function(options) { 
     //calls validate, 
     //calls plotChart 
     //calls plotaxis 
     . 
     . 
     . 
     . 

    } 
} 

Was ist der beste Weg, um mit Unit-Tests dieses irgendwie Code zu starten ist. Die meisten Funktionen wie a, b, c, plotGraph, plotAxis usw. sind private Funktionen, die nicht der Außenwelt ausgesetzt sind.

Plus, ist Mokka eine gute Wahl? Mein Ziel ist es, einen Eindruck von Komponententests zu bekommen und dann Erfahrungen zu sammeln, indem ich tiefer in die Materie eindringe. Bitte vorschlagen.

+0

jemand interessiert sich für die Abstimmung für die Schließung kommentieren? – beNerd

+0

Was setzen Sie als öffentliche API aus? Fang an, das zu testen. Das Outside in Structure hilft normalerweise, es mit dem Gesichtspunkt zu prüfen, wer Ihre Bibliothek benutzen wird. – MarcoL

+0

rechts. Ich zeige also nur eine öffentliche Methode 'createChart' an, die ein paar Optionen benötigt. Also keine Notwendigkeit, die privaten Methoden zu testen? – beNerd

Antwort

0

Mokka ist dafür geeignet. Siehe docs für den Browser-Textbaustein; Ich würde vorschlagen, Karma mit karma-mocha oder ein ähnliches Werkzeug zu verwenden, um dies zu automatisieren. Sie müssen auch eine Assertion-Bibliothek hinzufügen, da Mocha keine enthält. Chai ist eine beliebte Wahl.

Jasmine ist in der Syntax zu Mocha + Chai ähnlich. Es ist eher ein "All-in-One" Framework.

Unter der Annahme, ist eine globale Variable (zugewiesen window.graph), können Sie einen Test, wie die in den folgenden schreiben entweder Jasmin oder Mokka:

describe('graph', function() { 
    describe('method', function() { 
    describe('createChart()', function() { 
     it('should return x', function() { 
     var retval = graph.createChart(); 
     // assert return value 
     }); 

     it('should throw an exception if y', function() { 
     // assert exception thrown when called with some params 
     }); 

     it('should mutate z', function() { 
     // etc. 
     }); 
    }); 
    }); 
}); 

vorschlagen würde eine grundlegende „Intro zu Unit-Tests“ Tutorial lesen um eine Vorstellung davon zu bekommen, welche Behauptungen zu machen sind. Viel Glück!