Frage

Ich habe eine Rails -App, die JavaScript -Assets mithilfe von Vermögenswerten kombiniert Jammit, und ich würde gerne benutzen Jasmin Für das BDD-Stil Test meines JavaScript. Ich frage mich, ob jemand Ratschläge zum Zugriff auf den von Jammit erzeugten "Pacakges" aus Jasmine hat?

Das Problem ist, dass Jasmine durch Definieren einer Liste von JS -Dateien auf der Festplatte konfiguriert wird, um diese Dateien auf einer eigenen Testläuferseite zu enthält, die geladen und in einem Browser ausgeführt wird.

Ich könnte auf jede der einzelnen JS -Dateien in der Konfigurationsdatei jasmine.yml verweisen, bevor sie mit Jammit verpackt sind ... Jammit hat jedoch bereits Abhängigkeiten zwischen Dateien für mich und vor allem, auf den ich auch Zugriff benötige das kompilierte JavaScript -Vorlagen Diese Jammit produziert.

Ich konnte Jammit auch manuell ausführen, um das kompilierte Vermögen zuerst zu erzeugen und dann Jasmine zu betreiben, aber ich musste vor jedem Testanlauf das Vermögen von Hand neu generieren, um Änderungen zu testen, was ernsthaft einen schnellen Test begleitet. Angesteuerter Workflow.

Ich frage mich, ob ich irgendwie könnte:

  • Montieren Sie den Jammit -Controller aus dem Rack -Server von Jasmine, damit er die Pakete von Jasmine servieren kann? Dies würde im Grunde genommen genauso funktionieren wie Jammit von Rails 'Development Env.
  • Haken Sie sich irgendwie in Jasmine ein, um die Vermögenswerte auf jeder Seite zu verpacken, bevor die Tests durchgeführt werden? Dies wäre langsamer, würde mir aber einen Schritt ersparen und sicherstellen, dass die Dinge auf dem neuesten Stand waren.

Irgendwelche Vorschläge? Ich fange gerade damit an, also könnte ich alles falsch machen. Jeder Rat wäre sehr geschätzt. :-)

Vielen Dank! -John

War es hilfreich?

Lösung

Hier ist die magische Kombination, nach der Sie suchen:

  1. Verwenden Sie das Wachjuwel zusammen mit Guard-Jammit-Edelstein Achten Sie auf Änderungen des Vermögens Ihres Projekts
  2. Installiere das Leberoad -Plugin Im Browser Ihrer Wahl und installieren Sie die Guard-Leberoad-Edelstein So können Sie Ihr Browser automatisch neu laden, wenn sich Ihre Spezifikationen oder Vermögenswerte ändern.
  3. Brennen Sie den Wachmann, rake Jasmine und laden Sie Ihre Jasminspezifikationen in Ihren Browser und drücken Sie dann die Live-Reload-Taste, um eine Verbindung zum Live-Reload-Server herzustellen, den Guard gestartet hat
  4. Ändern Sie Ihre Dateien. Beobachten Sie die Magie, während die Wachmann Jammit betreibt und Ihren Browser anweist, die Jasminspezifikationen zu aktualisieren.

Hier ist eine Beispiel -Guardfile, um Ihnen den Einstieg zu erleichtern:

guard 'jammit' do
  watch(%r{public/javascripts/(.*)\.js})
  watch(%r{app/views/jst/(.*)\.jst})
  watch(%r{public/stylesheets/(.*)\.css})
end

guard 'livereload', :apply_js_live => false do
  watch(%r{app/.+\.(erb|haml)})
  watch(%r{app/helpers/.+\.rb})
  watch(%r{public/.+\.(css|js|html)})
  watch(%r{config/locales/.+\.yml})
  watch(%r{spec/javascripts/.+\.js})
end

Andere Tipps

Ich habe mir eine OK -Lösung ausgedacht: Jammit zum Nachladen und Verpacken zwingen, wenn Jasmine beginnt. Dazu müssen Sie die Datei jasmine_config.rb bearbeiten:

require 'jammit'
module Jasmine
  class Config

    Jammit.reload!
    Jammit.package!

   end
end

Ich habe hier einen detaillierteren Beitrag darüber geschrieben: http://www.rebeccamiller-webster.com/2011/05/jammit-jasmine-bdd/

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