2015-05-14 114 views
4

我用CommonJS的模塊需要()除了反應,其是全球:Jest/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對象? (我使用npm和gulp-browserify。)

回答

8

適用於以下設置。

// 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 
+0

非常感謝! –

+0

我發現我必須清除haste緩存才能使其工作。 'rm -rf node_modules/.haste_cache' –

+1

setupEnvScriptFile配置選項已被棄用一段時間。 Jest 15完全刪除它並用setupFiles替換它。此選項需要在執行測試文件之前按順序加載的一組文件路徑。 https://facebook.github.io/jest/blog/2016/09/01/jest-15.html#setupenvscriptfile-vs-setupfiles –

相關問題