用 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"
    },
    {...}
}