Так, ви праві. Основна проблема 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дорогоцінним каменем або подібною реалізацією.