Jak skonfigurować Jasmine w środowisku Rails 6 (gdzie Webpack zastępuje potok zasobów dla Javascript), aby móc testować moduły JavaScript, które napisałem dla mojej aplikacji?
Zainstalowałem klejnot jaśminu, uruchomiłem rails generate jasmine:install
i zredagowałem, jasmine.yml
aby wskazać lokalizację mojego źródła Javascript i specyfikacji.
Problem polega na tym, że nie mogę użyć instrukcji importu / eksportu. (Na przykład, starając się załadować mój pierwszy moduł do wyników badań w tym błędów w Chrome: Uncaught SyntaxError: Unexpected token 'export'
)
Z tego, co mogę powiedzieć, muszę skonfigurować Jasmine, aby używała babel; ale nie mam szczęścia znaleźć instrukcji, jak to zrobić w nowym układzie Rails 6.
Odpowiedzi:
Tak, masz rację. Głównym problemem
jasmine-gem
jest to, że nie przepuszcza specyfikacji przez babel. Pozwól, że opublikuję najszybsze rozwiązanie twojego problemu, a następnie pomyślę o możliwym wdrożeniu podobnego podejścia wjasmine-gem
.Główną ideą jest przepuszczanie specyfikacji przez pakiet WWW szyn, o ile ma on wszystkie wymagane konfiguracje babel.
jasmine-core
ponieważ nie będziemy używaćjasmine-gem
w tym rozwiązaniuTeraz utwórz dwa dodatkowe pakiety webpacka. Jeden jest dla Jasmine i będzie zawierał tylko Jasmine i biegacza testowego
I drugi dla kodu aplikacji i specyfikacji
Zwróć uwagę na swoje
'../javascripts'
i'../spec'
ścieżki. Dla mnie to wyglądało'../../assets/javascripts'
i'../../../spec'
szanowało.Następnie dodaj Webpack ProvidePlugin dla Jasmine (dodaj ten kod do
config/webpack/environment.js
)Dodaj stronę Jasmine Runner do swojej aplikacji
/jasmine
trasieTa odpowiedź została przygotowana na podstawie tego postu , jednak ponownie sprawdziłem instrukcje w ruby 2.6.3, szynach 6.0.2, dodałem odpowiednie zmiany do rekomendacji i udowodniłem, że to działa.
Daj mi znać, jeśli moja odpowiedź była dla Ciebie pomocna lub potrzebujesz dodatkowych informacji. Będę jednak pracował nad rozwiązaniem, które odniesie sukces w przypadku
jasmine
klejnotów lub podobnej implementacji.źródło
bootstrap.min.js
generuje błąd, który w zasadzie oznacza,jquery
że nie był wcześniej ładowanybootstrap
. Jednak] Nie mogę znaleźć, co w tym kodzie zmienia kolejność ładowania JS ... zwłaszcza, że mój bootstrap jest ładowany przez CDN w układzie aplikacji pojavascript_pack_tag 'application'
linii i mójapplication.js
już marequire('jquery')
. Jeśli masz tę konfigurację w środowisku lokalnym, czy możesz załadować bootstrap za pośrednictwem CDN w układzie aplikacji i sprawdzić, czy działa?