Jest тесты для кофе - PullRequest
       9

Jest тесты для кофе

0 голосов
/ 26 июня 2018

В проекте Rails у меня есть несколько файлов JavaScript, которые содержат синтаксис ERB, т.е.

// en_store.coffee.erb

EnStore =
  activities:
    title: 'Delete Note?'
    image: '<%= asset_path("crm/sections/en/calendar.png") %>'

module.exports.EnStore = EnStore

И тест:

// en_store.test.coffee

import { EnStore } from 'stores/en_store'

describe 'EN Store', () ->

  // This test passes.
  it 'should provide hard typed translation', () ->
    expect(EnStore.activities.title).toBe('Delete Note?')

  // This one fails as the EnStore.activities.image contains '<%= asset_path("crm/sections/en/calendar.png") %>' as a string and not the actual interpolated value.
  it 'should provide asset path', () ->
    expect(EnStore.activities.image).toBe('[This is not interpolated]')

Попытка проверить его с помощью Jest приводит к ошибке, поскольку часть ERB не интерполируется. Вне теста это обрабатывается Webpack через rails-erb-loader. Как я могу заставить его работать с Jest? Существует ли какой-либо пакет transform, который позволил бы мне сделать это?

Или есть альтернатива Jest, которая позволила бы мне тестировать файлы такого типа?

1 Ответ

0 голосов
/ 19 июля 2018

Поскольку нет поддержки babel или плагина для .erb файлов, которые вам нужны, нет простого способа превратить ваши исходные файлы в то, что jest может потреблять.

Хотя есть несколько жизнеспособных вариантов.

1) Использовать загрузчики webpack как плагины Babel

babel-plugin-webpack-loaders - это плагин Babel, предназначенный для использования загрузчиков веб-пакетов для преобразования ваших файлов через babel.

Это решение, упомянутое документами jest для проектов, основанных на нетривиальных конфигурациях Webpack, но проект больше не поддерживается и официально совместимо только с webpack v1 .

2) Написать пользовательский трансформатор Jests

Jest не обеспечивает встроенную интеграцию веб-пакетов, но обеспечивает преобразование исходных кодов с помощью преобразователей .

Вы могли бы рассмотреть написание пользовательского .erb преобразователя на основе Rails-загрузчика Webpack Erb .

3) Интеграция Jest и Webpack со сторонней утилитой

Даже если команда Jest официально не поддерживается jest-webpack - это проект, предназначенный для интеграции Jest с существующей конфигурацией Webpack .

...