首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组件在我测试时不会呈现

组件在我测试时不会呈现
EN

Stack Overflow用户
提问于 2015-09-21 11:40:04
回答 1查看 86关注 0票数 0

我有个很奇怪的问题。我使用jasmine 2.0react 0.13.3react-router 0.13.3和其他软件包。我有一个测试套件,它不能findRenderedDOMComponentWithTag()。请考虑确切的例子:

代码语言:javascript
复制
React = require('react')
TestUtils = require('react/addons.js').addons.TestUtils
ReactRouterContext = require('../../helpers/react_router_context_helper.coffee')

NewSession = require('../../../../app/coffee/components/sessions/new.coffee')
subject = ReactRouterContext(NewSession)

describe 'NewSession', ->
  it 'should send the query after clicking on the button', ->
    instance = TestUtils.renderIntoDocument(<subject />)
    h3 = TestUtils.findRenderedDOMComponentWithTag(instance, 'h3') # can't find at least one h3 tag

  it 'should render wrong login/password on error', ->
    pending()

  it 'should process user after successful login', ->
    # localStorage
    # alt.js
    # redirect
    pending()

这看起来很有趣,因为组件呈现函数中有警报方法,但是没有任何东西可以发出警报。

代码语言:javascript
复制
React = require('react')
ReactBootstrap = require('react-bootstrap')

Row = ReactBootstrap.Row
Col = ReactBootstrap.Col
Input = ReactBootstrap.Input
Button = ReactBootstrap.Button

WebUtils = require('../../web_utils.coffee')
SessionActions = require('../../actions/session_actions.coffee')

ErrorMessage = require('../error_message.coffee')

module.exports = React.createClass
  contextTypes: router: React.PropTypes.func
  getInitialState: ->
    { error_text: '' }
  handleSubmit: (e) ->
    e.preventDefault()
    WebUtils.query
      path: 'sessions'
      data: @getFormData()
      type: 'POST'
      callback: ((result) ->
        if result.status == 'success'
          SessionActions.create(result)
          @context.router.transitionTo('/')
        else
          @setState error_text: 'Неправильные логин и/или пароль'
      ).bind(this)
  getFormData: ->
    {
      login: @refs.login.getValue(),
      password: @refs.password.getValue()
    }
  render: ->
    alert 'hh'
    <form onSubmit={@handleSubmit}>
      <Row>
        <Col md={6} mdOffset={3} className='text-center'>
          <h3>Войти в систему</h3>

          { <ErrorMessage text={@state.error_text} /> if !!@state.error_text }

          <Input type='text' placeholder='Введите Ваш логин' ref='login' autoFocus />
          <Input type='password' placeholder='Пароль' ref='password' />
          <Button type='submit' bsStyle='success'>Вход</Button>
        </Col>
      </Row>
    </form>

--

代码语言:javascript
复制
# react_router_context_helper.coffee
React = require('react')
objectAssign = require('object-assign')

module.exports = (Component, props, stubs) ->
  RouterStub = ->
  objectAssign RouterStub, {
    makePath: ->
    makeHref: ->
    transitionTo: ->
    replaceWith: ->
    goBack: ->
    getCurrentPath: ->
    getCurrentRoutes: ->
    getCurrentPathname: ->
    getCurrentParams: ->
    getCurrentQuery: ->
    isActive: ->
    getRouteAtDepth: ->
    setRouteComponentAtDepth: ->
  }, stubs

  React.createClass
    childContextTypes:
      router: React.PropTypes.func
      routeDepth: React.PropTypes.number
    getChildContext: ->
      {
        router: RouterStub
        routeDepth: 0
      }
    render: ->
      React.createElement Component, props
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-21 16:12:03

这似乎很愚蠢,但我只需要将subject替换为Subject。因此,现在将我的变量视为组件类,而不是div标记。

代码语言:javascript
复制
Subject = ReactRouterContext(NewSession)
instance = TestUtils.renderIntoDocument(<Subject />)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32694303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档