Ya kau benar. Masalah utama jasmine-gem
adalah bahwa itu tidak menyalurkan spec melalui babel. Biarkan saya memposting solusi tercepat untuk masalah Anda dan setelah itu, saya akan memikirkan kemungkinan implementasi dari pendekatan serupa di jasmine-gem
.
Gagasan utamanya adalah menyalurkan spesifikasi melalui webpack rel selama ia memiliki semua konfigurasi babel yang diperlukan.
- Instal
jasmine-core
karena kami tidak akan menggunakan jasmine-gem
dalam solusi ini
yarn add jasmine-core -D
Sekarang buat dua paket webpack tambahan. Satu untuk Jasmine dan hanya akan berisi Jasmine dan pelari ujian
// app/javascript/packs/jasmine.js
import 'jasmine-core/lib/jasmine-core/jasmine.css'
import 'jasmine-core/lib/jasmine-core/jasmine-html.js'
import 'jasmine-core/lib/jasmine-core/boot.js'
import 'jasmine-core/images/jasmine_favicon.png'
Dan yang kedua untuk kode aplikasi Anda dan spesifikasi
// app/javascript/packs/specs.js
// First load your regular JavaScript (copy all the JavaScript imports from your main pack).
let webpackContext = require.context('../javascripts', true, /\.js(\.erb)?$/)
for(let key of webpackContext.keys()) { webpackContext(key) }
// Then load the specs
let specsContext = require.context('../spec', true, /\.js(\.erb)?$/)
for(let key of specsContext.keys()) { specsContext(key) }
Perhatikan jalan '../javascripts'
dan Anda '../spec'
. Bagi saya itu terlihat seperti '../../assets/javascripts'
dan dengan '../../../spec'
hormat.
Kemudian tambahkan Webpack ProvidPlugin untuk Jasmine (tambahkan kode ini ke config/webpack/environment.js
)
// config/webpack/environment.js
const webpack = require('webpack')
environment.plugins.prepend('Provide', new webpack.ProvidePlugin({
jasmineRequire: 'jasmine-core/lib/jasmine-core/jasmine.js',
}))
Tambahkan halaman pelari Jasmine ke aplikasi Anda
# config/routes.rb
Rails.application.routes.draw do
# ...
if Rails.env.development? || Rails.env.test?
get 'jasmine', to: 'jasmine#index'
end
end
# app/controllers/jasmine_controller.rb
class JasmineController < ApplicationController
layout false
def index
end
end
# app/views/jasmine/index.html.haml
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<%= stylesheet_pack_tag 'jasmine', :media => 'all' %>
</head>
<body>
<%= javascript_pack_tag 'jasmine' %>
<%= javascript_pack_tag 'specs' %>
</body>
</html>
- Sekarang Jasmine Anda harus bekerja pada
/jasmine
rute
Jawaban ini disiapkan berdasarkan posting ini , namun, saya telah memeriksa kembali instruksi pada ruby 2.6.3, rail 6.0.2, menambahkan perubahan yang sesuai pada rekomendasi dan membuktikan bahwa ini berhasil.
Tolong, beri tahu saya jika jawaban saya bermanfaat bagi Anda atau Anda memerlukan informasi tambahan. Namun, saya akan bekerja pada solusi yang akan berhasil dengan jasmine
gem atau implementasi serupa.