Testgetriebene JavaScript Entwicklung mit Jasmine

Mit dem Javascript-Test-Framework Jasmine lassen sich Javascript-Tests im Browser ausführen. Die Tests konzentrieren sich auf die Überprüfung von fest definierten Testfällen. Anbei ein Beispiel wie ein einfacher Test aussehen kann.

index.html (Diese Datei wird im Browser aufgerufen), Auszug:

<head>
  ...
  <link rel="stylesheet" type="text/css" href="lib/jasmine-1.1.0.rc1/jasmine.css">
  <script type="text/javascript" src="lib/jasmine-1.1.0.rc1/jasmine.js"></script>
  <script type="text/javascript" src="lib/jasmine-1.1.0.rc1/jasmine-html.js"></script>
 
  <!-- include source files -->
  <script type="text/javascript" src="test/myJs.js"></script>
 
  <!-- include spec files -->
  <script type="text/javascript" src="test/tests.js"></script>
 
  <script type="text/javascript">
    (function() {
      var jasmineEnv = jasmine.getEnv();
      jasmineEnv.updateInterval = 1000;
 
      var trivialReporter = new jasmine.TrivialReporter();
 
      jasmineEnv.addReporter(trivialReporter);
 
      jasmineEnv.specFilter = function(spec) {
        return trivialReporter.specFilter(spec);
      };
 
      var currentWindowOnload = window.onload;
 
      window.onload = function() {
        if (currentWindowOnload) {
          currentWindowOnload();
        }
        execJasmine();
      };
 
      function execJasmine() {
        jasmineEnv.execute();
      }
 
    })();
  </script>
...

Das zu testende Objekt ist sehr einfach gehalten:

// Beispiel Objekt
function Test() {}
// Eine einfache Methode
Test.prototype.getXYZ = function() {
  return 'XYZ';
};

Die eigentliche Testdefinition ist ebenfalls leicht zu verstehen:

describe("Test", function() {
  var test;
 
  beforeEach(function() {
    test = new Test();
  });
 
  describe("Testing getXYZ()", function() {
 
    it("getXYZ() should return XYZ", function() {
      expect(test.getXYZ()).toEqual('XYZ');
    });
 
    it("getXYZ() should not return ABC", function() {
      expect(test.getXYZ()).not.toEqual('ABC');
    });
 
  });
 
  it("Diser Test schlägt fehl", function() {
    expect(false).toEqual(true);
  });
 
});

Die Ausgabe des Tests würde folgendermaßen im Browser aussehen:

Jasmine testgetriebene Javascript-Entwicklung - Beispiel

Kommentar verfassen