簡體   English   中英

如何使用 RTL 斷言組件結構

[英]How to assert a component structure using RTL

我一直在開玩笑地對 nodejs 代碼進行單元測試,但現在我正在進入 RTL 進行 UI 測試,我有一些我不確定的事情。

你們是否有一些標准或方式來斷言組件的結構? 例如,讓我們假設這個組件有多個嵌套的有序列表和無序列表,我正在研究它,雖然我可以簡單地在屏幕上做斷言。嵌套列表的那個組件中的一些文本上的 findByText,它對結構沒有幫助其中,就像它的嵌套列表或嵌套 div 或任何東西一樣,它沒有告訴我該文本與我希望看到的內容相關的位置,只是它存在,(也許文本在第二個嵌套列表中而不是根列表或其他一些嵌套列表,那么你將如何處理?

這是一個例子,但我什至有 data.tables,里面有表格,我不知道如何確保結構正確。

謝謝你。

您正在尋找快照測試

每當您想確保您的 UI 不會意外更改時,快照測試都是一個非常有用的工具。

快照可以捕獲任何可序列化的值,應該在任何時候使用,目的是測試 output 是否正確。

例如

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM