Так, ви праві. Основна проблема jasmine-gem
полягає в тому, що він не пропускає спекуляцію через вавило. Дозвольте мені опублікувати якнайшвидше рішення вашої проблеми, і після цього я подумаю про можливу реалізацію подібного підходу вjasmine-gem
.
Основна ідея полягає в тому, щоб прокладати характеристики через веб-пакет рейок до тих пір, поки він має всі необхідні конфігурації штабеля.
- Встановити,
jasmine-core
оскільки ми не будемо використовувати jasmine-gem
в цьому рішенні
yarn add jasmine-core -D
Тепер створіть два додаткових пакети веб-упаковки. Один призначений для Жасмін і буде містити тільки Жасмін та тестувальний бігун
// 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'
поважно.
Потім додайте веб-пакет ProvidePlugin для Жасмін (додайте цей код до 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',
}))
Додайте в програму сторінку Jasmine ranner
# 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
маршруті
Ця відповідь підготовлена на основі цього допису , проте я переглянув інструкції щодо рубіну 2.6.3, рейки 6.0.2, додав відповідні зміни до рекомендацій та довів, що це працює.
Будь ласка, дайте мені знати, чи була моя відповідь корисною для вас чи вам потрібна додаткова інформація. Однак я буду працювати над рішенням, яке вдасться досягти з jasmine
дорогоцінним каменем або подібною реалізацією.