J'essaie de coller du texte qui est déjà dans mon presse-papier dans une zone de texte, mais je ne comprends pas comment utiliser "Eventinit" pour faire cela. J'ai lu la documentation sur la façon de coller du texte dans une zone de texte, mais il n'est pas clair sur la façon d'utiliser EventInit.
Comment puis-je coller du texte qui est dans mon presse-papier dans une zone de texte à l'aide de UserEvent?
Ceci est mon code:
test('Copy id button copies correct id', async () => {
const { getAllByLabelText, debug, getByText } = render(
<MockedProvider mocks={mocks} addTypename={false}>
<History />
</MockedProvider>
);
const textbox = <input type="text" />;
await waitFor(() => new Promise((resolve) => setTimeout(resolve, 0)));
const button = getAllByLabelText('click to copy id')[0];
fireEvent.click(button);
// userEvent.paste(textbox,_,) unsure what to do here...
});
Une autre option serait de faire quelque chose comme
test('Pasting fires onPaste event which returns clipboard data', () => {
const pasted = jest.fn(() => null);
const changed = jest.fn(() => null);
render(
<PasteComponent paste={pasted} changeEvent={changed} data-testid='paste-input' />);
const PhoneNumberElement = screen.queryByTestId('paste-input');
const paste = createEvent.paste(PhoneNumberElement, {
clipboardData: {
getData: () => '123456',
},
});
fireEvent(PhoneNumberElement, paste);
expect(pasted).toHaveBeenCalled();
expect(pasted).toHaveBeenCalledWith('123456');
});
J'ai écrit un post dessus - - https://medium.davidendersby.me/2-ways-to-trigger-the-onpaste-event-vith-testing-library-1502c5fdb9e