测试React-Router v1.0.0 href

时间:2015-10-30 11:50:04

标签: javascript reactjs react-router

目前使用Jest和React-Router来尝试测试元素的href具有预期值。

按照说明here

jest.dontMock('../BasicPage')

describe('BasicPage', function() {
  let BasicPage = require('../BasicPage')
  let TestUtils = require('react-addons-test-utils')
  let ReactDOM = require('react-dom')
  let React = require('react')

  it('renders the Login button if not logged in', function() {
    let page = TestUtils.renderIntoDocument(<BasicPage />)
    let button = TestUtils.findRenderedDOMComponentWithTag(page, 'button')
    expect(ReactDOM.findDOMNode(button).textContent).toBe('Login')
  })

  it('renders the Account button if logged in', function() {
    let page = TestUtils.renderIntoDocument(<BasicPage authenticated={true} />)
    let button = TestUtils.findRenderedDOMComponentWithTag(page, 'button')
expect(ReactDOM.findDOMNode(button).getAttribute('href')).toBe('/admin')
  })
})

元素的链接如下:

<Button bsStyle="primary"><Link to="/admin">Login</Link></Button>

当按钮中的console.log&#39; href不存在且测试返回null时!

有没有人找到解决这个问题的方法?

2 个答案:

答案 0 :(得分:1)

如果您需要,您需要在<Router>个实例下呈现内容<Link>实际工作。 <Router>提供了<Link>用于生成href并处理点击的上下文的历史记录实例。

为了方便测试,我们将允许您在没有历史记录实例的情况下渲染<Link>,但正如您所看到的,它们将无法正常运行。

答案 1 :(得分:-1)

expect(ReactDOM.findDOMNode(button).getAttribute('href')).toBe('/admin')

这不是找错了吗?你不想找到锚吗?