【问题标题】:Jest/React - How to use global object in unit tests?Jest/React - 如何在单元测试中使用全局对象?
【发布时间】:2015-07-25 20:02:09
【问题描述】:

我使用带有 require() 的 CommonJS 模块,但 React 是全局的:

// I don't want require React in every module:
// var React = require("react");

var MyComponent = React.createClass({ // React is global here
});

在 MyComponent 上运行单元测试时,Jest 找不到 React。有没有办法告诉 Jest 插入一个全局 React 对象? (我使用 npm 和 gulp-browserify。)

【问题讨论】:

    标签: javascript unit-testing reactjs jestjs


    【解决方案1】:

    适用于我的以下设置。

    // package.json
    
    "jest": {
      "scriptPreprocessor": "preprocessor.js",
      "unmockedModulePathPatterns": [
        "react"
      ],
      "setupEnvScriptFile": "before_test.js"
    }
    
    // preprocessor.js
    
    var ReactTools = require('react-tools');
    
    module.exports = {
        process: function(src) {
            return ReactTools.transform(src);
        }
    };
    
    // before_test.js
    
    React = require("react"); // Global React object
    

    【讨论】:

    • 我发现我必须清除急速缓存才能让它工作。 rm -rf node_modules/.haste_cache
    • setupEnvScriptFile 配置选项已被弃用一段时间。 Jest 15 将其完全删除并用 setupFiles 替换。此选项需要在执行测试文件之前按顺序加载的文件路径数组。 facebook.github.io/jest/blog/2016/09/01/…
    猜你喜欢
    • 1970-01-01
    • 2016-05-28
    • 2020-10-03
    • 1970-01-01
    • 2020-08-17
    • 2020-07-24
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    相关资源
    最近更新 更多