我有一个不使用 browserify 的 React 应用程序工具。
这意味着React
变量由 <head>
中调用的 React js 库的脚本导出。 .
// React variable is already available
var MyComponent = React.createClass({});
实现该组件后,我想为其创建一个测试。 我看了一下Jest documentation我已经创建了我的组件测试。
/** @jsx React.DOM */
jest.dontMock('../compiled_jsx/components/my-component.js');
describe('MyComponent', function() {
it('The variables are being passed to component', function() {
var React = require('react/addons');
// In the `MyComponent` import I got the error below:
// ReferenceError: /compiled_jsx/components/my-component.js: React is not defined
var myComponent = require('../compiled_jsx/components/my-component.js');
});
在 Jest documentation例如,组件及其测试都使用 require
获取 React
的函数变量。
有什么办法可以暴露React
变量到组件中?
或者是否需要使用 browserify 来创建此测试?
最佳答案
Jest 在 Node.js 中运行,因此您需要使用 commonjs 模块。您不将 browserify 与 Jest 一起使用。如果您真的反对 commonjs 模块,您可以假设每个文件都包装在 ife 中来执行此操作。
var React = typeof require === 'undefined'
? window.React
: require('react/addons');
或者作为测试的第一行,尝试:
global.React = require('react/addons');
无论哪种方式,都可以使用以下方法导出组件:
try { module.exports = Foo; } catch (e) { window.Foo = Foo };
就我个人而言,如果您不使用 commonjs 模块,我认为 jest 不实用。
关于javascript - 如何在没有 Browserify 的情况下测试 React 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25987506/