2015-10-30 4 views
4

В настоящее время с помощью Jest с React-Router для тестирования элемента есть href с ожидаемым значением.Тестирование React-Router v1.0.0 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'in на кнопку HREF не присутствует и тест возврата нуль!

Кто-нибудь нашел способ обойти это?

ответ

1

Если вы хотите, например, вы должны сделать вещи под кодом <Router>. <Link> s для фактически работайте. <Router> предоставляет экземпляр истории в контексте, который <Link> использует для генерации href и обрабатывает клики.

Для удобства тестирования мы предоставим вам <Link> с без экземпляра истории, но, как вы можете видеть, они не будут работать.

+1

Вы бы это сделали после импорта реактивного маршрутизатора? cmdv

-1

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

Разве это не находя неправильную вещь? разве вы не хотите найти якорь?

+0

@JimmyJia был прав, чтобы иметь возможность увидеть HREF атрибута нужно обернуть элемент в -> ->. Это полезно для некоторых случаев пользователя, когда URL-адреса обрабатываются с помощью функции на компонентеDidMount. Но, как вы упомянули в твите, наш пользовательский случай - проверить правильность отображения ссылок на компоненты, поскольку мы пытаемся заменить интеграционные тесты. Не могли бы вы перевести его на единичный тест - это разумный выбор? – cmdv