为什么我需要 `module.exports` 开玩笑?我怎样才能避免它?
Why do I need `module.exports` in jest? How can I avoid it?
我在尝试使用 jest
框架测试我的 React js 代码时遇到了麻烦。
假设这是我的组件:
# coffee/global_widget.coffee
@GlobalWidget = React.createClass
render: ->
<div className='row'>
<div className='col-md-12'>
<TerminalWidget />
</div>
</div>
# coffee/terminal_widget.coffee
@TerminalWidget = React.createClass
render: ->
<div>Hey! This is the terminal!</div>
所以,我想使用 jest
来测试它。
jest.dontMock '../coffee/global_widget'
describe 'GlobalWidget', ->
global.React = require('react/addons')
GlobalWidget = require('../coffee/global_widget')
TestUtils = React.addons.TestUtils
globalWidgetForTest = TestUtils.renderIntoDocument(<GlobalWidget />)
# body of the test
我有一个问题:
npm test
> terminal-ui@0.0.2 test /home/alex/my_project
> jest
Using Jest CLI v0.4.5
FAIL __tests__/global_widget-test.coffee (0.276s)
● GlobalWidget › it encountered a declaration exception
- ReferenceError: GlobalWidget is not defined
如果我将 module.exports = @GlobalWidget
附加到 coffee/global_widget.coffee
,那么我会得到 TerminalWidget is not defined
。什么是 module.exports=
,为什么我需要为代码中的每个组件添加它们?
jest 似乎无法访问您的全局变量,因此您需要导出每个文件并在必要时要求它们。
你需要使用 module.exports 因为你在这一行 GlobalWidget = require('../coffee/global_widget')
中使用了 requirejs 语法。这样做是为了隔离您的代码,以防止出现一堆全局可用的代码。这样,您只导入(使用 require
)和导出(使用 module.exports = ...
)您实际需要的代码。此外,在本例中,它允许诸如 jest 之类的进程访问原本可用的文件。
如果您绝对不想使用 requirejs
(建议使用),您可以尝试将它们添加到您的全局变量或摆弄笑话 config 以便在您的测试之前使用它们套件,尽管这可能比仅导出模块更困难
我在尝试使用 jest
框架测试我的 React js 代码时遇到了麻烦。
假设这是我的组件:
# coffee/global_widget.coffee
@GlobalWidget = React.createClass
render: ->
<div className='row'>
<div className='col-md-12'>
<TerminalWidget />
</div>
</div>
# coffee/terminal_widget.coffee
@TerminalWidget = React.createClass
render: ->
<div>Hey! This is the terminal!</div>
所以,我想使用 jest
来测试它。
jest.dontMock '../coffee/global_widget'
describe 'GlobalWidget', ->
global.React = require('react/addons')
GlobalWidget = require('../coffee/global_widget')
TestUtils = React.addons.TestUtils
globalWidgetForTest = TestUtils.renderIntoDocument(<GlobalWidget />)
# body of the test
我有一个问题:
npm test
> terminal-ui@0.0.2 test /home/alex/my_project
> jest
Using Jest CLI v0.4.5
FAIL __tests__/global_widget-test.coffee (0.276s)
● GlobalWidget › it encountered a declaration exception
- ReferenceError: GlobalWidget is not defined
如果我将 module.exports = @GlobalWidget
附加到 coffee/global_widget.coffee
,那么我会得到 TerminalWidget is not defined
。什么是 module.exports=
,为什么我需要为代码中的每个组件添加它们?
jest 似乎无法访问您的全局变量,因此您需要导出每个文件并在必要时要求它们。
你需要使用 module.exports 因为你在这一行 GlobalWidget = require('../coffee/global_widget')
中使用了 requirejs 语法。这样做是为了隔离您的代码,以防止出现一堆全局可用的代码。这样,您只导入(使用 require
)和导出(使用 module.exports = ...
)您实际需要的代码。此外,在本例中,它允许诸如 jest 之类的进程访问原本可用的文件。
如果您绝对不想使用 requirejs
(建议使用),您可以尝试将它们添加到您的全局变量或摆弄笑话 config 以便在您的测试之前使用它们套件,尽管这可能比仅导出模块更困难