具有以下單元測驗:
const MY_URL = 'example.com'
it('should render MyComponent with url', () => {
const { getByTestId } = render(<MyComponent />);
const myLink = getByTestId(TestIds.LINK);
expect(loggingLink).toContain(MY_URL);
});
測驗失敗并顯示以下訊息:
Expected value: "example.com"
Received object: <div class="m-3" data-testid="test-link"><a href="example.com">my-link</a></div>
所以似乎toContain沒有檢查該物件內部的內容。有沒有一種方法可以檢查 URL 是否在物件內部?
uj5u.com熱心網友回復:
您可以通過查詢獲取錨元素ByRole。只需搜索它,link然后檢查屬性href:
// I used screen in this case, but you can get getByRole from render.
const anchorElement = screen.getByRole('link');
expect(anchorElement).toBeInTheDocument();
expect(anchorElement).toHaveAttribute('href', 'example.com');
錨元素link只有在存在 href 屬性時才有作用,否則沒有相應的作用。你可以在這里查看更多資訊。
uj5u.com熱心網友回復:
有幾件事。首先,toContain用于測驗元素是否存在于陣列中。https://jestjs.io/docs/expect#tocontainitem
其次,RTL 的重點不是測驗屬性等,而是測驗用戶在螢屏上看到的內容。所以我想這樣做的“RTL方式”是單擊鏈接并查看顯示的內容。誠然,這并不總是在每種情況下都有幫助!
如果您絕對確定此 url 需要圍繞它進行測驗,那么您確實有一個通過底層jest jsdom 選擇器的逃生艙口。您可以使用沼澤標準查詢元素querySelector,然后href直接測驗該屬性。
事實上,您甚至不需要 querySelector。這些getBy方法都回傳一個 jsdom 物件,然后您可以使用它進行測驗getAttribute('href')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/484102.html
標籤:javascript 反应 单元测试 开玩笑的 反应测试库
上一篇:使用時刻獲取基于周數和天數的日期
下一篇:不同大小的圓的碰撞
