在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包可以让我这样做? …
我试图弄清楚如何从编译过程中提取一些信息。babel
更具体地说,当我运行时babel(无论是否使用Webpack的babel-loader,测试框架的转换器,Babel的CLI等),我都需要为每个编译文件提取一些信息。喜欢:
工作正常,但仅提供Webpack的加载程序运行时间。没有有关单个编译文件的信息。
我考虑过编写一个Webpack插件以按此处所述插入编译过程,但是我找不到合适的钩子来识别正在处理的文件babel。
我猜@kidroca指出了正确的方向。更具体地说,我了解Babel的wrapPluginVisitorMethod选择是进入Babel编译过程的关键。
见babel-minify的定时插件。
相关主题:
我最终尝试将解决方案包装到称为babel-timing的工具中。
{
"presets": ["es2015"]
}
Run Code Online (Sandbox Code Playgroud)
Package.json文件代码在这里
{
"name": "Zoylo",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"postinstall": "rm ./node_modules/react-native/local-cli/core/__fixtures__/files/package.json",
"test": "jest"
},
"dependencies": {
"@ptomasroos/react-native-multi-slider": "0.0.11",
"babel-core": "^6.26.0",
"babel-loader": "^7.1.2",
"jwt-node-decoder": "0.0.4",
"npm": "^5.3.0",
"prop-types": "^15.6.1",
"react": "^16.2.0",
"react-dom": "^16.3.2",
"react-native": "^0.52.0",
},
"devDependencies": {
"babel-eslint": "^8.0.3",
"babel-jest": "20.0.3",
"babel-plugin-transform-export-extensions": "^6.22.0",
"babel-preset-env": "^1.6.1",
"babel-preset-es2015": "^6.24.1",
"babel-preset-react": "^6.24.1",
"babel-preset-react-native": "^4.0.0",
"babel-preset-stage-2": "^6.24.1",
"jest": "20.0.4",
"react-test-renderer": "16.0.0-alpha.12"
},
}
Run Code Online (Sandbox Code Playgroud)
我认为这是一个圣经问题。它工作正常,仅1天前,在npm安装后,我正面临此问题。
如何在不修改脚本的情况下在命令行上测量npm / yarn任务的执行时间。
在我的特殊用例中,我想执行一个现有的E2E测试(纱线测试:e2e)100次并取平均值。
我有一个Helper.js具有以下几个辅助功能的文件,该文件正在不同的组件中使用。
export function buildOptions(elem) {
var oList=[];
for (var i=0; i < field.length; i++) {
oList.push (
<option value={options[i]["id"]}>
{options[i][elem]}
</option>
)
}
return oList;
}
export function B(){
.....
}
Run Code Online (Sandbox Code Playgroud)
这是一个利用Helper.js文件中定义的功能的组件。我正在为组件编写测试,我想模拟在此调用的外部函数。
import React from 'react';
import ReactDOM from 'react-dom';
import { buildOptions, A} from './Helper.js';
class DemoComponent extends React.Component {
constructor(props) {
super(props);
}
add(e, index) {
....
}
render() {
var o_list=buildOptions("name");
return (
<div>
...
<select required className={selectClass} >
{o_list}
</select>
...
<button …Run Code Online (Sandbox Code Playgroud) babeljs ×2
jestjs ×2
webpack ×2
babel-loader ×1
erb ×1
javascript ×1
measure ×1
mocking ×1
npm ×1
react-native ×1
task ×1
time ×1
unit-testing ×1
yarnpkg ×1