A Programmer's Blog

JS-Labs PT. 2: Javascript sauber testen mit Jasmine und Coffeescript

Apr
24

Im ersten JS-Labs Post habe ich angekündigt, dass ich mir verschiedene Frameworks zur RIA Entwicklung mit Javascript anschauen werde.

Der erste Versuch soll eine reine jQuery-Entwicklung werden – Keine kompletten MVC-Frameworks, nur jQuery mit ein paar Extras. Dazu habe ich mir das Testframework Jasmine und die Scriptsprache CoffeeScript angschaut.

Jasmine ist ein behaviour-driven-development-framework um Tests im Stil von rspec zu schreiben. CoffeeScript ist eine Scriptsprache die direkt in Javascript kompiliert. Die Kombination aus beiden führt zu sehr schönen Tests!

Hier ein vereinfachtes Beispiel der Suite für die Bookmark-Klasse aus dem Wakmarks-Projekt:

describe "Bookmark", ->
  bookmark = null

  beforeEach ->
    bookmark = new Bookmark(1, "A Bookmark", "http://google.de")
  it "should have correct id", ->
    expect(bookmark.id).toEqual(1)
  it "should have correct name", ->
    expect(bookmark.name).toEqual("A Bookmark")
  it "should have correct URL", ->
    expect(bookmark.url).toEqual("http://google.de")

Das Ergebnis ist sehr übersichtlich, wie ich finde.

Die getestete Bookmark-Klasse sieht in CoffeeScript so aus:

class Bookmark
  constructor: (@id, @name, @url) ->

Also wenn das nicht cool ist?

JS-Labs – Wakmarks PT.1

Apr
22

In den nächsten Tagen werde ich verschiedene Frameworks zur RIA-Entwicklung austesten. Primär interessieren mich dabei die folgenden Punkte:

  • MVC
  • Dependency Injection
  • Testbarkeit
  • Performance

Momentan habe ich vor allem einen Blick auf AngularJS und JavascriptMVC.

Ich habe mir zu Testzwecken eine kleine WebApp überlegt um Bookmarks zu verwalten. Natürlich gibt es dafür schon tausende, es geht jar nur ums ausprobieren 😉

Ich werde in nächster Zeit drei Protoypen bauen, jeweils mit UnterschiedlichenTTechnologien:

  1. jQuery plus diverse Plugins für Unit-Tests und Klassen.
  2. AngularJS
  3. JavascriptMVC

Die statische Variante (ohne Funktion) ist bereits hier (ja ich weiss: schön ist was anderes ;D). In den folgenden Parts werde ich dann die einzelnen Prototypen vorstellen.