如何在没有Browserify的情况下测试React组件
How to test React component without Browserify
我有一个react应用程序,它不使用browserfy工具。这意味着React
变量由<head>
中调用的react js lib的脚本导出。
// React variable is already available
var MyComponent = React.createClass({});
在实现了这个组件之后,我想为它创建一个测试。我查看了Jest文档,并创建了组件测试。
/** @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文档示例中,组件及其测试都使用require
函数来获取React
变量。
有什么方法可以将React
变量公开到组件中吗?或者有必要使用browserfy来创建这个测试?
Jest在node.js中运行,因此需要使用commonjs模块。你不能把浏览和玩笑混为一谈。如果你真的反对commonjs模块,你可以假设每个文件都封装在一个iffe中。
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是不实用的。
相关文章:
- node.js测试事件是否是在不使用超时的情况下使用sinon.js发出的
- 在禁用浏览器flash插件的情况下运行Karma测试
- 如何在没有空回调的情况下测试多个调用
- 如何在没有视网膜显示的情况下测试视网膜图像置换
- 角度单元测试:如何在没有范围的情况下测试控制器属性
- 在我的情况下,如何解决我的单元测试问题
- 如何在用户使用护照登录的情况下测试帆.js控制器.js
- Javascript if/else 语句不起作用,但是里面的代码就像我在没有 if/else 的情况下测试的那样
- 在没有节点的情况下测试Reactjs
- Mongoose创建测试数据并在没有数据库连接的情况下进行填充
- 如何使用一个函数测试Angular控制器,该函数可以在不嘲笑AJAX调用的情况下进行AJAX调用
- 单元测试javascript函数'在不知情的情况下被用于其他地方
- 在没有循环的情况下测试一组元素之间的html5数据相等性
- 如何在没有Browserify的情况下测试React组件
- 如何在我的情况下修复这个单元测试
- 如何单元测试一个函数在我的情况下
- Karma/Jasmine在没有运行测试的情况下超时
- 使用Chutzpah运行QUnit (TypeScript)测试会在已经启动的情况下在测试上下文之外调用start()
- 单元测试-如何在不重定向的情况下测试javascript重定向
- Ruby on Rails - 如何在支持和不使用 JavaScript 支持的情况下测试方案