首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何匹配@testing-library/react中的React节点?

如何匹配@testing-library/react中的React节点?
EN

Stack Overflow用户
提问于 2021-08-17 08:46:39
回答 1查看 79关注 0票数 0

我想测试prop是否正确地增加了节点值,然后传递给了组件。问题是,即使测试和组件具有相同的节点,它也会被jest识别为不同的节点。

基本上,我的组件呈现以下内容:

代码语言:javascript
复制
function MyComponent({columns}){
   let columnsWithDescriptions = columns.map(c => ({
      ...c,
      description: <div>{c.name} - {c.last_name}</div>
   });

   return <Table columns={columnsWithDescriptions} />
}

然后我执行in测试:

代码语言:javascript
复制
test('check props', function(){
   render(<MyComponent columns={[{name: 'abc', last_name: 'def'}]} />
   expect(Table).toHaveBeenCalledWith({
     columns: [{name: 'abc', last_name: 'def', description: <div>abc - def</div>}],
   }); 
});

它几乎可以工作,但失败了,因为节点内部包含了一个不同的字符串:

代码语言:javascript
复制
                "description": <div>
        -         abc | def
        +         abc
        +          | 
        +         def
                </div>,

你对如何解决这个问题有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2021-08-18 08:04:28

经过一番调查,我找到了解决办法。假设这两个元素相等是错误的。在代码中:

代码语言:javascript
复制
const name = 'abc';
const last = 'edf';
<div> {name} - {last} </div> !== <div> abc - edf </div>

第一个节点有3个子节点,第二个节点只有一个子节点。

我在测试中修复了它:

代码语言:javascript
复制
<div> {name} - {last} </div> === <div> {'abc'} - {'edf'} </div>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68814323

复制
相关文章

相似问题

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