2012-03-28 7 views
3

Ich benutze Backbonejs und benutze require.js, um jedes abhängige Backbone-Widget zu laden, bevor ich meine App starte und alles in einen benutzerdefinierten Namespace setze, in diesem Fall "Foo" . Ich möchte, dass Jasmine diese Loader-Datei lädt und alle abhängigen Javascripts (die sich in/public/js meiner Haupt-App befinden) abholt, aber ich bekomme alle 404-Dateien, da Jasmine nichts über die/public weiß/js-Verzeichnis auf Port 8888. Wie kann ich Jasmine dazu bringen, diese Javascripts zu laden?Verwenden von require.js mit Jasmine zum Laden von Skripten, die 404 zurückgeben

Foo = {}; 
    jQuery(function(){ 
    var include = ['/js/widget.js','/js/delta_widget.js','/js/inbox.js','/js/time_widget.js','/js/high_stock_widget.js','/js/daily_summary_widget.js']; 
    require(include,function(){ 
     $.getScript('/js/app.js'); 
    }); 
    }); 

Für jede der Javascripts, erhalte ich: Ressource laden fehlgeschlagen: der Server mit einem Status von 404 geantwortet (nicht gefunden) http://0.0.0.0:8888/js/widget.js

Antwort

2

Es scheinen würde, dass Ihre Jasmine Loader-Datei/SpecRunner befindet sich in einem anderen Verzeichnis als Ihr require.js-Loader (standardmäßig main.js). Sie müssen require.js konfigurieren einen anderen Basispfad zu verwenden, indem Sie folgendermaßen vorgehen:

jQuery(function(){ 
require.config(
{ 
    baseUrl: '/public' 
}); 

var include = ['js/widget.js', 
       'js/delta_widget.js', 
       'js/inbox.js', 
       'js/time_widget.js', 
       'js/high_stock_widget.js', 
       'js/daily_summary_widget.js']; 

require(include,function() 
{ 
    $.getScript('/js/app.js'); 
}); 

Sie haben die oben „baseUrl“ Eigenschaft zu konfigurieren, um die richtige URL/Pfad zu verweisen. Zum Beispiel, wenn Ihr Jasmin SpecRunner befindet sich in:

Basis - main.js - js - widget.js - app.js - Libs - Jasmin --- SpecRunner. html

dann müssen Sie

baseUrl: "../../" 

hoffe, das hilft konfigurieren.