javascript - 如何在没有 Browserify 的情况下测试 React 组件

标签 javascript reactjs browserify jestjs reactjs-testutils

我有一个不使用 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/

相关文章:

javascript - 限制在一个三 Angular 形内

javascript - 当 Firebase 数据不是 "undefined"时

javascript - 使用 browserify 要求扩展的正确方法

browserify - browserify 如何捆绑一个通用模块

javascript - 如何使用node js检查文件是否存在于 's3'/ 'azure'路径中

javascript - TypeScript - 基于枚举比较的 Switch 语句直接进入 DefaultCase

reactjs - 当前用户的 Meteor 应用数据结构?

reactjs - 如何根据reactjs中显示的内容拉伸(stretch)卡片?

javascript - 未处理的拒绝(类型错误): dispatch is not a function getting this error in action creator

javascript - 在 gulp 中使用 browserify 忽略模块