gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 21:57:04 26 4
gpt4 key购买 nike

我有一个不使用 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 模块。你不会 Jest 使用 browserify。如果你真的反对 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 不实用。

关于javascript - 如何在没有 Browserify 的情况下测试 React 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25987506/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com