用CoffeeScript编写的Jest +酶测试

时间:2018-06-21 15:02:42

标签: reactjs coffeescript jestjs enzyme

是否可以在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配置中设置的预处理程序?还是其他?

1 个答案:

答案 0 :(得分:0)

是的,有可能需要在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"
    },
    {...}
}