【问题标题】:Jest tests for coffee.ERB filescoffee.ERB 文件的 Jest 测试
【发布时间】:2018-06-26 13:45:21
【问题描述】:

在 Rails 项目中,我有一些包含 ERB 语法的 JavaScript 文件,即

// 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 的方法可以让我测试这些类型的文件?

【问题讨论】:

    标签: ruby-on-rails webpack jestjs erb


    【解决方案1】:

    由于您需要的 .erb 文件没有 babel 支持或插件,因此没有简单的方法将源文件转换为 jest 可以使用的东西。

    不过,有一些可行的选择。

    1) 将 webpack 加载器作为 Babel 插件使用

    babel-plugin-webpack-loaders 是一个 Babel 插件,旨在通过 babel 使用 webpack 加载器来转换您的文件

    这是jest's docs提到的基于非平凡Webpack配置的项目的解决方案,但该项目不再维护并且仅与webpack v1正式兼容.

    2) 编写 Jests 自定义转换器

    Jest 不提供开箱即用的 webpack 集成,但通过 transformers 提供源代码转换。

    您可以根据Webpack's Rails erb loader 考虑writing a custom .erb transformer

    3) 将 Jest 和 Webpack 与第三方实用程序集成

    即使没有得到 Jest 团队的官方支持 jest-webpack 也是一个旨在将 Jest 与您现有的 Webpack 配置 集成的项目。

    【讨论】:

      猜你喜欢
      • 2019-06-13
      • 2018-06-15
      • 2017-04-27
      • 2019-05-01
      • 2018-03-20
      • 2019-03-09
      • 2020-11-21
      • 1970-01-01
      • 2020-01-16
      相关资源
      最近更新 更多