У меня проблемы с созданием модульных тестов, чтобы проверить, ведут ли мои ссылки href в моем меню Antd в нужные места. Я использовал antd Menu с SubMenu, которое содержит два раскрывающихся элемента. При нажатии на любой из них они переходят на соответствующие URL-адреса. Вот мой App.js:
import React from 'react';
import {Menu} from antd;
export default function App(){
<Menu>
<Menu.SubMenu key = 'google' title = {"Google Links}>
<Menu.ItemGroup>
<Menu.Item><a href = {https://www.google.com/}> Homepage Link </a></Menu.Item>
<Menu.Item><a href = {https://www.google.com/imghp?hl=en}> Images Link</a</Menu.Item>
</Menu.ItemGroup>
</Menu.SubMenu>
<Menu>
}
Вот что я пробую в своем модульном тесте App.test.js
describe('Google Links', ()=>{
it('Links Work', () =>{
const wrapper = shallow(<App/>);
const menuFound = wrapper.find(Menu)
menuFound.simulate('click',{key:'google'});
expect(wrapper.find(Menu).at(0).props().href).toBe('https://www.google.com/');
expect(wrapper.find(Menu).at(1).props().href).toBe('https://www.google.com/imghp?hl=en');
});
});
Я также пробовал:
describe('Google Links', ()=>{
it('Links Work', () =>{
const {getByText} = render(<App/>);
expect(getByText('Homepage Link')).toHaveAttribute('href','https://www.google.com/');
expect(getByText('Images Link)).toHaveAttribute('href','https://www.google.com/imghp?hl=en');
});
});
Ни один из этих методов не работает, и я чувствую, что перепробовал все, что мог найти в документации и других сообщениях о переполнении стека.
screen
и сделатьscreen.getByText
илиscreen.getByRole
для ссылок. Это должно вернуть вам ссылку или, если вы хотите несколько, тоgetAll
. Кроме того, если вы хотите отладить, лучше проверить, что возвращаетgetByText('Homepage Link')
. Возможно, он не возвращает действительный элемент. - person jaybhatt   schedule 16.05.2021