Ich habe eine Web-App, bei der der Client-Code mit Coffeescript geschrieben und mit require.js geladen wird.
Ich möchte diesen Code gerne isoliert und mit einem node-basierten Test-Runner wie expresso (obwohl auch andere Vorschläge willkommen sind) testen, damit ich die Client-seitigen Tests in unseren CI-Server integrieren kann - derzeit ist das Team City.
So ist mein Verzeichnisaufbau:
.
coffee
models
node_modules
expresso
spec
tests
views
static
js
lib
models
tests
views
Diese werden mit require.js verbunden, so:
deps = [
"lib/backbone", "models/websocket_collection", "/static/js/lib/date.js"
]
define(deps, (Backbone, ws) ->
# Modulcode und Exporte hier
Und im Browser so geladen:
In einer idealen Welt möchte ich jetzt ein Testmodul haben, das so aussieht:
{Model1, Model2} = require "models/some_module"
exports.test_a = ->
assert.equal # usw. usw.
Ich habe mehrere Probleme (weil ich node serverseitig kaum benutzt habe, außer als ich mit zombie.js gespielt habe)
-
Wie sage ich node, wo all meine simplen JavaScript-Abhängigkeiten sind (in static/js/lib)? Einige davon wurden heruntergeladen, aber backbone.js wurde mit require.js define-Dingen markiert, wie folgt
define(function(require, exports, module) { (function(){
-
Wie führe ich die Tests tatsächlich aus? Ich habe r.js ausprobiert (was meines Wissens nach eine Brücke zwischen Browser-seitigem require und node's require sein soll)
das Problem, das ich bekomme, ist:
ReferenceError: define is not defined
Ich habe auch versucht, require("allplugins-require") zu nutzen, das ist das Skript, das ich auf der Browserseite lade, um meinen gesamten Client-Code zu sammeln, aber das scheint node's require zu unterbrechen.
- Macht das jemand?
- Wenn Sie das nicht machen, wie testen Sie Ihren Code (Bonuspunkte für die Integration in die CI)?
- Gibt es Alternativen zu require.js zur Verwaltung von Client-seitigen Abhängigkeiten, die auf der Serverseite besser funktionieren könnten?
Ich würde mich freuen, alternative Ansätze zu hören, die Leute verwenden.
Danke, Ben