Wie konfiguriere ich Jasmine in der Rails 6-Umgebung (in der Webpack die Asset-Pipeline für Javascript ersetzt), damit ich die Javascript-Module testen kann, die ich für meine App geschrieben habe?
Ich habe den Jasmin-Edelstein installiert rails generate jasmine:install
, ausgeführt und bearbeitet jasmine.yml
, um auf den Speicherort meiner Javascript-Quelle und meiner Spezifikationen zu verweisen.
Das Problem ist, dass ich keine Import / Export-Anweisungen verwenden kann. (Zum Beispiel versuchen , meinen ersten Modul Testergebnisse in diesem Fehler in Chrome zu laden: Uncaught SyntaxError: Unexpected token 'export'
)
Nach allem, was ich sagen kann, muss ich Jasmine für die Verwendung von Babel einrichten. Ich habe jedoch kein Glück, Anweisungen dazu im neuen Rails 6-Layout zu finden.
Antworten:
Ja, du hast Recht. Das Hauptproblem von
jasmine-gem
ist, dass es die Spezifikation nicht durch babel leitet. Lassen Sie mich die schnellste Lösung für Ihr Problem veröffentlichen, und danach werde ich über die mögliche Implementierung eines ähnlichen Ansatzes in nachdenkenjasmine-gem
.Die Hauptidee besteht darin, die Spezifikationen durch das Rails-Webpack zu leiten, solange alle erforderlichen Babel-Konfigurationen vorhanden sind.
jasmine-core
da wirjasmine-gem
diese Lösung nicht verwenden werdenErstellen Sie nun zwei zusätzliche Webpack-Pakete. Eine ist für Jasmine und enthält nur Jasmine und den Testläufer
Und die zweite für Ihren Anwendungscode und die Spezifikationen
Achten Sie auf Ihre
'../javascripts'
und'../spec'
Pfade. Für mich sah es so aus'../../assets/javascripts'
und'../../../spec'
respektvoll.Fügen Sie dann das Webpack ProvidePlugin für Jasmine hinzu (fügen Sie diesen Code hinzu
config/webpack/environment.js
)Fügen Sie Ihrer Anwendung die Jasmine-Rannerseite hinzu
/jasmine
unterwegs arbeitenDiese Antwort wird auf dieser Grundlage erstellt Beitrags erstellt . Ich habe jedoch die Anweisungen zu Ruby 2.6.3, Rails 6.0.2, erneut überprüft, entsprechende Änderungen an den Empfehlungen hinzugefügt und bewiesen, dass dies funktioniert.
Bitte lassen Sie mich wissen, ob meine Antwort für Sie hilfreich war oder Sie zusätzliche Informationen benötigen. Ich werde jedoch an einer Lösung arbeiten, die mit
jasmine
gem oder einer ähnlichen Implementierung erfolgreich sein wird.quelle
bootstrap.min.js
wirft aber plötzlich einen Fehler aus, der im Grunde bedeutet, dassjquery
er vorher nicht geladen wirdbootstrap
. ] Ich kann jedoch nicht finden, was in diesem Code die JS-Ladereihenfolge ändert ... zumal mein Bootstrap über CDN im Anwendungslayout nach derjavascript_pack_tag 'application'
Zeile geladen wird und meinapplication.js
bereits eine hatrequire('jquery')
. Wenn Sie dieses Setup in einer lokalen Umgebung haben, können Sie Bootstrap über CDN im Anwendungslayout laden und prüfen, ob es funktioniert?