reactjs – 如何测试呈现的React组件的HTML?

My React component一个suggestionRenderer属性,允许指定组件的呈现方式.例如:
<Autosuggest suggestions={getSuburbs}
             suggestionRenderer={renderLocation} />
function renderLocation(suggestion,input) {
  return (
    <span><strong>{suggestion.slice(0,input.length)}</strong>{suggestion.slice(input.length)}</span>
  );
}

现在,我想写一个开玩笑测试,以确保suggestionRenderer完成它的工作.检查myElement.getDOMNode().innerHTML显示

<span data-reactid=".9.1.$suggestion0.0"><strong data-reactid=".9.1.$suggestion0.0.0">M</strong><span data-reactid=".9.1.$suggestion0.0.1">ill Park</span></span>

这不是特别有用.

有没有办法获得干净的HTML,没有React属性

您可以使用 React.renderToStaticMarkup.
expect(React.renderToStaticmarkup(
  <Autosuggest ... suggestionRenderer{renderLocation}/>
))
.to.be('<div>...')

或者只是抓取innerHTML并手动剥离它,但我不知道跨浏览器有多可靠:

var reactAttrs = / data-react[-\w]+="[^"]+"/g

myElement.getDOMNode().innerHTML.replace(reactAttrs,'')

我曾经使用React.renderComponentToString并在添加React.renderToStaticmarkup之前手动剥离数据反应器.

相关文章

一、前言 在组件方面react和Vue一样的,核心思想玩的就是组件...
前言: 前段时间学习完react后,刚好就接到公司一个react项目...
前言: 最近收到组长通知我们项目组后面新开的项目准备统一技...
react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom...