用 CoffeeScript 编写的 Jest + Enzyme 测试
Jest + Enzyme tests written in CoffeeScript
是否可以在 CoffeeScript 中编写酶测试?
// sample.test.coffee
React = require "react"
ReactDOM = require 'react-dom'
shallow = require('enzyme').shallow
test 'render', () ->
expect(shallow(`<span/>`).contains('does not matter')).toBe(true)
上面的 yarn test
抛出 Unexpected token <
错误。并指向<span/>
的开头。我假设我缺少一些应该在 jest.transform
配置中设置的预处理?还是其他原因?
是的,有可能,需要在 Jest 配置中正确设置预处理器:
test/javascript/preprocessor.js:
const coffee = require('coffeescript');
const babelJest = require('babel-jest');
module.exports = {
process: (src, path, ...rest) => {
if (coffee.helpers.isCoffee(path)) {
// Compile the CoffeeScript files to JSX
compiled_to_js = coffee.compile(src, {bare: true});
return babelJest.process(compiled_to_js, path, ...rest);
}
return src;
}
};
package.json:
"jest": {
"moduleFileExtensions": [
"js",
"coffee"
],
"testMatch": [
"**/__tests__/**/*.js?(x)",
"**/?(*.)+(spec|test).(js|coffee)?(x)"
],
"transform": {
"^.+\.jsx?$": "babel-jest",
".*": "./test/javascript/preprocessor.js"
},
{...}
}
是否可以在 CoffeeScript 中编写酶测试?
// sample.test.coffee
React = require "react"
ReactDOM = require 'react-dom'
shallow = require('enzyme').shallow
test 'render', () ->
expect(shallow(`<span/>`).contains('does not matter')).toBe(true)
上面的 yarn test
抛出 Unexpected token <
错误。并指向<span/>
的开头。我假设我缺少一些应该在 jest.transform
配置中设置的预处理?还是其他原因?
是的,有可能,需要在 Jest 配置中正确设置预处理器:
test/javascript/preprocessor.js:
const coffee = require('coffeescript');
const babelJest = require('babel-jest');
module.exports = {
process: (src, path, ...rest) => {
if (coffee.helpers.isCoffee(path)) {
// Compile the CoffeeScript files to JSX
compiled_to_js = coffee.compile(src, {bare: true});
return babelJest.process(compiled_to_js, path, ...rest);
}
return src;
}
};
package.json:
"jest": {
"moduleFileExtensions": [
"js",
"coffee"
],
"testMatch": [
"**/__tests__/**/*.js?(x)",
"**/?(*.)+(spec|test).(js|coffee)?(x)"
],
"transform": {
"^.+\.jsx?$": "babel-jest",
".*": "./test/javascript/preprocessor.js"
},
{...}
}