ใช่คุณพูดถูก. ปัญหาหลักของjasmine-gem
คือมันไม่ได้ท่อสเป็คผ่านบาเบล jasmine-gem
ให้ฉันโพสต์วิธีการแก้ปัญหาที่เร็วที่สุดในการแก้ไขปัญหาของคุณและหลังจากนั้นผมจะคิดว่าการดำเนินการที่เป็นไปได้ของวิธีการที่คล้ายกันใน
แนวคิดหลักคือการส่งรายละเอียดผ่าน webpack ทางรถไฟตราบใดที่มีการกำหนดค่า babel ทั้งหมดที่จำเป็น
- ติดตั้ง
jasmine-core
เนื่องจากเราจะไม่ใช้jasmine-gem
ในโซลูชันนี้
yarn add jasmine-core -D
ตอนนี้สร้าง webpack เพิ่มเติมสองชุด หนึ่งสำหรับจัสมินและจะมีจัสมินและนักวิ่งทดสอบเท่านั้น
// 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'
และอันที่สองสำหรับรหัสแอปพลิเคชันของคุณและรายละเอียด
// 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) }
เอาใจใส่กับคุณ'../javascripts'
และ'../spec'
เส้นทาง สำหรับฉันมันดูเหมือน'../../assets/javascripts'
และให้'../../../spec'
ความเคารพ
จากนั้นเพิ่ม Webpack ProviderPlugin สำหรับ Jasmine (เพิ่มรหัสนี้ลงใน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',
}))
เพิ่มหน้า ranner Jasmine ให้กับแอปพลิเคชันของคุณ
# 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>
- ตอนนี้จัสมินของคุณควรทำงานใน
/jasmine
เส้นทาง
โปรดแจ้งให้เราทราบหากคำตอบของฉันมีประโยชน์สำหรับคุณหรือคุณต้องการข้อมูลเพิ่มเติม อย่างไรก็ตามฉันจะทำงานเกี่ยวกับวิธีแก้ปัญหาที่จะประสบความสำเร็จกับjasmine
อัญมณีหรือการนำไปใช้ที่คล้ายกัน