Como configuro o Jasmine no ambiente do Rails 6 (onde o Webpack substitui o pipeline de ativos para Javascript) para que eu possa testar os módulos Javascript que escrevi para o meu aplicativo?
Eu instalei a jasmim, executei rails generate jasmine:install
e editei jasmine.yml
para apontar para o local da minha fonte e especificações do Javascript.
O problema é que não consigo usar instruções de importação / exportação. (Por exemplo, a tentativa de carregar o meu primeiro módulo para resultados de teste neste erro no Chrome: Uncaught SyntaxError: Unexpected token 'export'
)
Pelo que sei, preciso configurar o Jasmine para usar o babel; mas não estou tendo sorte em encontrar instruções sobre como fazer isso no novo layout do Rails 6.
Respostas:
Sim, você está certo. O principal problema
jasmine-gem
é que ele não canaliza as especificações através do babel. Deixe-me postar a solução mais rápida para o seu problema e, depois disso, pensarei na possível implementação de uma abordagem semelhante nojasmine-gem
.A idéia principal é canalizar as especificações através do webpack rails, desde que ele tenha todas as configurações necessárias de babel.
jasmine-core
pois não usaremosjasmine-gem
nesta soluçãoAgora crie dois pacotes webpack adicionais. Um é para Jasmine e conterá apenas Jasmine e o executor de teste
E o segundo para o código do aplicativo e as especificações
Preste atenção aos seus
'../javascripts'
e'../spec'
caminhos. Para mim, parecia'../../assets/javascripts'
e'../../../spec'
respeitosamente.Em seguida, adicione o Webpack ProvidePlugin for Jasmine (adicione este código a
config/webpack/environment.js
)Adicione a página do Jasmine runner ao seu aplicativo
/jasmine
rotaEsta resposta foi preparada com base neste post . No entanto, verifiquei novamente as instruções no ruby 2.6.3, rails 6.0.2, adicionei alterações apropriadas às recomendações e provamos que isso funciona.
Por favor, deixe-me saber se minha resposta foi útil para você ou se você precisa de mais informações. No entanto, vou trabalhar em uma solução que terá êxito com
jasmine
gem ou implementação semelhante.fonte
bootstrap.min.js
está lançando um erro que basicamente significa quejquery
não está sendo carregado antesbootstrap
. No entanto,] não consigo encontrar o que neste código altera a ordem de carregamento do JS ... especialmente porque meu bootstrap está sendo carregado via CDN no layout do aplicativo após ajavascript_pack_tag 'application'
linha e o meuapplication.js
já possui umrequire('jquery')
. Se você tiver essa configuração em um ambiente local, poderá carregar o bootstrap via CDN no layout do aplicativo e ver se funciona?