Comment configurer Jasmine dans l'environnement Rails 6 (où Webpack remplace le pipeline d'actifs pour Javascript) afin que je puisse tester les modules Javascript que j'ai écrits pour mon application?
J'ai installé la gemme de jasmin, ai couru rails generate jasmine:install
et édité jasmine.yml
pour pointer vers l'emplacement de ma source et de mes spécifications Javascript.
Le problème est que je ne peux pas utiliser d'instructions d'importation / exportation. (Par exemple, en essayant de charger mon premier module aux résultats des tests dans cette erreur dans Chrome: Uncaught SyntaxError: Unexpected token 'export'
)
D'après ce que je peux dire, j'ai besoin de configurer Jasmine pour utiliser babel; mais, je n'ai pas de chance de trouver des instructions sur la façon de le faire dans la nouvelle disposition de Rails 6.
Réponses:
Oui tu as raison. Le principal problème de
jasmine-gem
est qu'il ne transmet pas la spécification via babel. Permettez-moi de publier la solution la plus rapide à votre problème et après cela, je penserai à la mise en œuvre possible d'une approche similaire enjasmine-gem
.L'idée principale est de diriger les spécifications à travers le webpack de rails tant qu'il a toutes les configurations babel requises.
jasmine-core
car nous n'utiliserons pasjasmine-gem
dans cette solutionCréez maintenant deux packs Webpack supplémentaires. L'un est pour Jasmine et ne contiendra que Jasmine et le testeur
Et le second pour votre code d'application et les spécifications
Faites attention à vos chemins
'../javascripts'
et'../spec'
. Pour moi, cela ressemblait'../../assets/javascripts'
et'../../../spec'
respectueusement.Ajoutez ensuite le Webpack ProviderPlugin pour Jasmine (ajoutez ce code à
config/webpack/environment.js
)Ajouter la page Jasmine Ranner à votre application
/jasmine
routeCette réponse est préparée sur la base de ce post , cependant, j'ai revérifié les instructions sur ruby 2.6.3, rails 6.0.2, ajouté les modifications appropriées aux recommandations et prouvé que cela fonctionne.
Veuillez me faire savoir si ma réponse vous a été utile ou si vous avez besoin d'informations supplémentaires. Cependant, je vais travailler sur une solution qui réussira avec
jasmine
gem ou une implémentation similaire.la source
bootstrap.min.js
jette soudainement une erreur qui signifie essentiellement qu'iljquery
n'est pas chargé avantbootstrap
. Cependant,] je ne trouve pas ce qui change dans l'ordre de chargement de JS dans ce code ... d'autant plus que mon bootstrap est chargé via CDN dans la mise en page de l'application après lajavascript_pack_tag 'application'
ligne et que mon aapplication.js
déjà unrequire('jquery')
. Si vous avez cette configuration dans un environnement local, pouvez-vous charger le bootstrap via CDN dans la disposition de l'application et voir si cela fonctionne?