2017-11-13 3 views
0

Meine Jasmin-Spezifikationen laufen gut. Aber wenn ich jquery Syntax wie $ verwenden erhalte ich folgende Fehlermeldung:Jasmin-Juwel lädt JQuery nicht richtig

ReferenceError: Can't find variable: $ in http://localhost:57132/__spec__/

Also, ich gem "jasmine-jquery-rails" hinzugefügt

Nach bundle install immer noch die gleichen Fehler.

Jetzt habe ich beschlossen, jasmine-jquery auf der Jasmine.yml-Datei hinzuzufügen, aber immer noch den gleichen Fehler.

Dann habe ich beschlossen, jasmine-jquery.js manuell herunterladen und setzen Sie das auf app/assets/javascripts und fügen Sie das zu jasmine.yml. Dann bekomme ich einen Fehler bei allen Spezifikationen.

TypeError: Right-hand side of 'instanceof' is not an object 

TypeError: $ is not a function 

Ich verstehe nicht, was ich hier falsch mache.

Ich denke, die Reihenfolge, die wir Datei laden, ist das Problem hier. Aber das konnte ich nicht herausfinden.

Antwort

1

Ich habe gerade angefangen, den Jasmine-Edelstein gestern zu benutzen, aber nachdem ich eine Weile damit gekämpft habe, habe ich es für mich arbeiten lassen.

Was Sie brauchen, ist, dass JQuery den $ Handler registriert. Das Hinzufügen der JQuery-Bibliothek zur src_files inscheint damit nicht zu helfen.

Was für mich arbeiten war assets/application.js in jasmine.yml als ersten Eintrag unter src_files enthalten:

src_files: 
    - assets/application.js 
    - '../vendor/javascripts/*.js' 
    - 'javascript/**/*.js' 

(ich meine eigentlichen Quelldateien im Ordner javascript/ bekam und verwenden Sie die ..vender/javascripts/ Ordner für Bibliotheken von Drittanbietern, wird dies für Sie anders sein)

Stellen Sie sicher, JQuery in assets/javascripts/application.js wie dies erforderlich ist.

// This is a manifest file that'll be compiled into application.js, which will include all the files 
// listed below. 
// 
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, 
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path. 
// 
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the 
// compiled file. JavaScript code in this file should be added after the last require_* statement. 
// 
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details 
// about supported directives. 
// 
//= require jquery 
//= require jquery_ujs 
//= require turbolinks 
//= require_tree . 

Das ist ungefähr wie Ihre assets/javascripts/application.js aussehen sollte, wenn Sie eine neue Anwendung über das Befehlszeilenprogramm rails new generieren.

Der Edelstein jasmine-jquery-rails hilft nicht bei Ihrem Problem, da er zusätzliche Testfunktionen bietet, nicht grundlegende JQuery-Unterstützung.

Gute Erfolge mit Jasmine!