【发布时间】:2015-12-01 16:02:12
【问题描述】:
我有一个 React 组件。我想测试它们。但是每次尝试使用经过测试的组件findRenderedDOMComponentWithTag 时都会出现意外错误。这是 Karma 错误日志:
05 09 2015 20:31:23.450:INFO [watcher]: Changed file "/tmp/35ffb917aab483a567d1be6fed779291.browserify".
PhantomJS 2.0.0 (Linux 0.0.0) DestroySession should process user logout FAILED
TypeError: undefined is not a function (evaluating 'target.dispatchEvent(e)') in http://localhost:9876/karma.js (line 1134)
at /tmp/35ffb917aab483a567d1be6fed779291.browserify:59730:16
PhantomJS 2.0.0 (Linux 0.0.0): Executed 3 of 7 (1 FAILED) (skipped 4) (0.04 secs / 0.019 secs)
我的堆栈是:
- 咖啡脚本
- 反应(+jsx)
- 浏览
- karma.js
- 幻影
- 茉莉花
组件:
React = require('react')
ReactBootstrap = require('react-bootstrap')
Button = ReactBootstrap.Button
SessionActions = require('../../actions/session_actions.coffee')
module.exports = React.createClass
contextTypes: router: React.PropTypes.func
handleClick: (e) ->
e.preventDefault()
console.log 'хуйло'
SessionActions.destroy()
@context.router.transitionTo('/sessions/new')
render: ->
<Button onClick={@handleClick} className='btn btn-default navbar-btn'>Sign out</Button>
测试:
React = require('react/react-with-addons.js')
TestUtils = React.addons.TestUtils
DestroySession = require('../../../../app/coffee/components/sessions/destroy.coffee')
describe 'DestroySession', ->
instance = undefined
beforeEach ->
instance = TestUtils.renderIntoDocument(<DestroySession />)
it 'should process user logout', ->
localStorage.setItem('token', 123)
localStorage.setItem('userName', 'Anonymous Person')
localStorage.setItem('userId', 11)
button = TestUtils.findRenderedDOMComponentWithTag(instance, 'button')
console.log button
这很奇怪,但是当我尝试console.log 我的按钮变量时出现错误。如果我注释掉测试的最后一行,它将通过。发生了什么事?
【问题讨论】:
-
我也看到了这一点:我可以成功地对实例进行评估和测试,但是如果我将实例推送到
console.log,我会得到完全相同的错误。
标签: javascript coffeescript reactjs jasmine phantomjs