Я новичок в React и смотрю на Jest как потенциальное решение для тестирования модулей. Тем не менее, мне было удивительно сложно выяснить, как просто утвердить значение атрибута rendered в ReactComponent
. Я не уверен, что это связано с тем, что обычная практика заключается в том, чтобы не отображать и не видеть фактическое значение, или если я еще не нашел хорошего примера.Как утверждать значение атрибута?
Итак, вот что я работаю с:
компонента Label:
var Label = React.createClass({
render: function() {
if (this.props.targetName) {
return (
<label htmlFor="{this.props.targetName}">{this.props.content}</label>
);
}
return (
<label>{this.props.content}</label>
);
}
});
module.exports = Label;
тест шутя:
describe('Label sub component', function() {
var Label = require('../../../views/label');
it('has the correct target element name', function() {
var labelDocument = TestUtils.renderIntoDocument(
<Label targetName="foobar" content="Upload Files:"/>
);
var label = TestUtils.findRenderedDOMComponentWithTag(labelDocument, 'label');
expect(label.getDOMNode().getAttribute('for')).toEqual('foobar'); // actually returns {this.props.targetName}
});
});
Итак, как вы можете видеть, Я не уверен в ожидании утверждения здесь. Я хотел бы ожидать, что значение foobar
отображается в правильном элементе. Тогда я могу убедиться, что привязка props
верна. label
- это ReactComponent
, и я вижу много доступных свойств и методов. Каков наилучший способ увидеть и проверить фактическое значение, которое будет отображаться?
Спасибо, я думаю, что это моя проблема. Кажется странным, что «проблема синтаксиса» отлично отображается в браузере. –
Ну, это не синтаксическая ошибка на самом деле, моя ошибка для ее формулировки. Это всего лишь правильный код внутри строки, и механизм Javascript не знает, что это код, а не строка (помните, что все внутри {и} в JSX - это просто Javascript). –
Спасибо. Думаю, это имеет смысл. Там * должен * быть каким-то образом реагировать, чтобы знать, однако, потому что он отлично отображает браузер. Если бы не было возможности узнать, я бы ожидал увидеть '{this.props.targetName}' rendered. Я сейчас проверил, и это действительно вызвало проблему. Поэтому большое спасибо за вашу помощь. –