Я могу просто найти, существуют ли элементы на данный момент. Я пробовал использовать функцию насмешки и имитировать щелчок ручки, но не смог дозвониться. Пожалуйста, объясните мне, как справиться с нажатием кнопки. Когда перенаправление на пусто, необходимо обработать кнопку, проверяя, вызвана ли какая-либо функция с именем buttonOnClickHandler или вызвана modalHandler.
{isEmpty(redirectTo) ?
(<button
type="button"
className="help__more-info c-link"
onClick={buttonOnClickHandler ? buttonOnClickHandler : this.modalHandler}
><span className="c-link__icon">
<img alt={altText || "More Info"} src={icon} />
</span>
<span className="c-link__text">
{buttonText}
</span>
</button>) : (
<a className="c-link" href={redirectTo}>
<span className="c-link__icon">
<img alt={altText || "More Info"} src={icon} />
</span>
<span className="c-link__text">
{linkText || "More Info"}
</span>
</a>
)
}
, и тестовый пример, который я пытался написать, выглядит следующим образом
describe("When re direction link is defined", () => {
beforeEach(() => {
component.setProps({
redirectTo: ""
});
})
it("Should have 1 button", () => {
expect(component.find("button").length).toEqual(1);
});
it("Should have 1 image", () => {
expect(component.find("img").length).toEqual(1);
});
// describe("When button is clicked", () => {
// it('function should have been called', () => {
// const modalHandler = jest.fn();
// component = mount(< HelpComponent {...props} />);
// component.find('.c-link').at(0).simulate('click');
// expect(modalHandler).toHaveBeenCalled();
// })
// })
});
Пожалуйста, обратитесь к перу, где я поделился как Js, так и тестовыми файлами. https://codepen.io/arunkgowda/pen/RwbmmQj