【发布时间】:2020-11-17 19:12:57
【问题描述】:
我已经围绕 react-toastify 构建了一个包装器,以便我可以在多个地方调用它。
这是包装器的代码:
import { ReactText } from 'react';
import { toast } from 'react-toastify';
export const showNotification: (
message: string,
type?: 'info' | 'success' | 'warning' | 'error',
timeOut?: number,
) => ReactText
= (message, type = 'success', timeOut = 5000) => toast(
message, { type, autoClose: timeOut },
);
export const dismissNotification = (toastId: ReactText) => toast.dismiss(toastId);
现在,我正在测试我的dismissNotification 函数。
我已经写了这个测试用例:
it('dismisses notification when called', async () => {
render(<ToastContainer />);
const notificationId = showNotification('Test Notification', 'success', 2000);
await waitFor(() => {
expect(screen.getByText('Test Notification')).toBeInTheDocument();
});
dismissNotification(notificationId);
await waitForElementToBeRemoved(() => {
expect(screen.queryByText('Test Notification')).not.toBeInTheDocument();
});
});
但最后一个测试用例总是失败,说存在带有文本 Test Notification 的 dom 节点。
实际错误:
dismisses notification when called
expect(element).not.toBeInTheDocument()
expected document not to contain element, found <div class="Toastify__toast-body" role="alert">Test Notification</div> instead
【问题讨论】:
标签: reactjs jestjs react-testing-library