mrt*_*mrt 5 ruby-on-rails erb webpack jestjs
在Rails项目中,我有一些包含ERB语法的JavaScript文件,即
// en_store.coffee.erb
EnStore =
activities:
title: 'Delete Note?'
image: '<%= asset_path("crm/sections/en/calendar.png") %>'
module.exports.EnStore = EnStore
Run Code Online (Sandbox Code Playgroud)
而且测试:
// 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]')
Run Code Online (Sandbox Code Playgroud)
尝试使用Jest测试它会导致错误,因为ERB部分未进行插值.在测试之外,这是由Webpack通过rails-erb-loader.如何让它与Jest一起使用?有没有现成的transform包可以让我这样做?
或者是否可以替代Jest让我测试那些类型的文件?
由于没有 babel 支持或.erb您需要的文件插件,因此没有简单的方法将您的源文件转换为jest可以使用的文件。
不过,有一些可行的选择。
babel-plugin-webpack-loaders是一个 Babel 插件,旨在使用webpack 加载器通过 babel 转换文件。
这是jest 文档中提到的针对基于重要 Webpack 配置的项目的解决方案,但该项目不再维护,并且仅与webpack v1正式兼容。
Jest 不提供开箱即用的 webpack 集成,但通过Transformer提供源代码转换。
您可能会考虑编写一个.erb基于Webpack 的 Rails erb loader 的自定义转换器。
即使没有得到 Jest 团队的正式支持, jest-webpack也是一个旨在将Jest与现有Webpack 配置集成的项目。
| 归档时间: |
|
| 查看次数: |
290 次 |
| 最近记录: |