reactjs 如何使用RTLAssert组件结构

3phpmpom  于 2023-01-30  发布在  React
关注(0)|答案(1)|浏览(92)

我已经越来越擅长用jest对nodejs代码进行单元测试了,但是现在我开始使用RTL进行UI测试,我对一些事情不太确定。
有没有什么标准或者方法来Assert组件的结构?例如,假设这个组件有多个嵌套的有序和无序列表,我正在研究这个问题,虽然我可以简单地在屏幕上Assert。findByText对嵌套列表组件中的一些文本,它对它的结构没有帮助,比如它的嵌套列表或嵌套div或任何东西,它没有告诉我文本相对于我期望看到内容的位置,而只是告诉我它存在,(也许文本在第二个嵌套列表中,而不是根列表或其他嵌套列表中,那么你将如何处理它呢?
这是一个例子,但我甚至有数据表与表内和idk如何确保结构是正确的。
谢谢你。

x8diyxa7

x8diyxa71#

您正在寻找的页面
每当您想要确保UI不会意外更改时,快照测试都是非常有用的工具。
快照可以捕获任何可序列化的值,并且应该在测试输出是否正确的任何时候使用。
例如
index.test.tsx

import { render } from '@testing-library/react';
import React from 'react';

const TestComp = () => {
  return (
    <>
      <ul>
        {[
          { name: 'apple', products: ['a', 'b', 'c'] },
          { name: 'sony', products: ['x', 'y', 'z'] },
        ].map((brand) => (
          <li key={brand.name}>
            {brand.name}
            <ul>
              {brand.products.map((p) => (
                <li key={p}>{p}</li>
              ))}
            </ul>
          </li>
        ))}
      </ul>
    </>
  );
};

describe('75194829', () => {
  test('should pass', () => {
    const { container } = render(<TestComp />);
    expect(container).toMatchSnapshot();
  });
});

__snapshots__/index.test.tsx.snap

// Jest Snapshot v1, xxxxx

exports[`75194829 should pass 1`] = `
<ul>
  <li>
    apple
    <ul>
      <li>
        a
      </li>
      <li>
        b
      </li>
      <li>
        c
      </li>
    </ul>
  </li>
  <li>
    sony
    <ul>
      <li>
        x
      </li>
      <li>
        y
      </li>
      <li>
        z
      </li>
    </ul>
  </li>
</ul>
`;

提示:要获取渲染元素的根元素,请使用container.firstChild

相关问题