在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的替代品,可以让我测试那些类型的文件?
答案 0 :(得分:0)
由于您不需要.erb
文件的babel支持或插件,因此没有简单的方法可以将源文件转换为jest
可以使用的东西。
不过,有一些可行的选择。
babel-plugin-webpack-loaders
是Babel插件,旨在使用 webpack加载程序通过babel转换文件。
这是jest's docs提到的针对基于非常规Webpack配置的项目的解决方案,但是该项目不再维护,并且仅与 webpack v1正式兼容 strong>。
Jest并没有提供现成的Webpack集成,而是通过transformers提供了源代码转换。
您可能会考虑基于writing a custom .erb
transformer的Webpack's Rails erb loader。
即使Jest团队未jest-webpack
正式支持,该项目也旨在将 Jest 与您现有的 Webpack配置集成。