Klassen, die in CoffeeScript definiert sind, die nicht von Jasminspezifikationen gefunden wurden

StackOverflow https://stackoverflow.com/questions/8310329

Frage

Ich baue ein Backbone.js-App auf einem Back-End-Schienen 3.1. Ich verwende CoffeeScript, um die Backbone-Klassen zu schreiben, und Jasmine (über Jasmine-Headless-Webkit) zum Testen.

Angesichts des folgenden (teilweisen) Baumes:

.
├── app
│   ├── assets
│   │   ├── javascripts
│   │   │   └── views
│   │   │       ├── avia_view.js.coffee
├── spec
│   ├── javascripts
│   │   └── views
│   │       └── avia_view_spec.js.coffee

... Ich würde erwarten avia_view_spec.js.coffee wissen von Avia.AviaView, was in definiert ist in avia_view.js.coffee.

Ich bekomme jedoch die folgende Ausgabe vom Laufen bundle exec jasmine-headless-webkit:

Running Jasmine specs...
F

Avia.AviaView render creates a new MatricesView . (/home/duncan/avia/spec/javascripts/views/avia_view_spec.js.coffee:10)
  ReferenceError: Can't find variable: Avia in /home/duncan/avia/spec/javascripts/views/avia_view_spec.js.coffee (line ~5)
  ReferenceError: Can't find variable: Avia in /home/duncan/avia/spec/javascripts/views/avia_view_spec.js.coffee (line ~10)

Mein jasmine.yml Enthält Folgendes:

src_files:
  - public/javascripts/prototype.js
  - public/javascripts/effects.js
  - public/javascripts/controls.js
  - public/javascripts/dragdrop.js
  - public/javascripts/application.js
  - public/javascripts/**/*.js

ich denken Ich muss Jasmine sagen, dass er den Inhalt von laden soll avia_view.js.coffee Aber ich bin mir nicht ganz sicher, wie. Hinzufügen einer expliziten Referenz in der src_files Abschnitt in jasmine.yml Scheint keinen Unterschied zu machen ...

Könnte mir bitte jemand sagen, was ich hier falsch mache? Ich vermute, es ist etwas Einfaches ...

War es hilfreich?

Lösung

Ohne viel von Ihrem Code gesehen zu haben, würde ich vermuten, dass Coffeescripts Funktionswickeln (Dokumente). Sie müssen sicherstellen, dass alle Symbole, die Sie verwenden möchten, zu einem Ort exportiert werden, an dem Sie sie erreichen können (hier ist eine gründliche Diskussion darüber).

Bearbeiten: Hier ist Eine weitere langjährige und theoretische, aber gute Dokumentation zu diesem Thema.

Andere Tipps

Versuchen Sie, dies zu Ihrem hinzuzufügen avia_view.js.coffee

(exports ? this).Avia = Avia 

Sehen Dies Für eine detaillierte Erklärung.

Alternativ versuchen Sie es Dies;

window.Avia = Avia

Wir haben das gleiche Problem gestoßen; Ich empfehle sehr Jasmin Reis

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top