Closed
Description
react-testing-library
version: 3.1.0react
version: 16.3.2node
version: 8.9.1npm
(oryarn
) version: 5.5.1
Relevant code or config:
describe("WebhookSender Fetch", () => {
beforeEach(() => {
Rendered = renderIntoDocument(componentMarkup);
});
afterEach(() => {
cleanup();
fetch.resetMocks();
});
it("should show render results", async (done) => {
fetch.mockReject(fetchRejectMsg);
const sendBtnNode = Rendered.getByText('Send');
fireEvent(sendBtnNode, new MouseEvent('click', {
bubbles: true,
cancelable: true,
}));
await wait(() => Rendered.getByText(fetchRejectMsg));
expect(Rendered.getByText(fetchRejectMsg, {exact: false})).toBeInTheDOM();
done();
});
});
What you did:
The test is successful if I comment out the following div with ref, in my react component being tested:
<div ref={(bottom) => { this.fetchBottom = bottom; }}>
<p> </p>
</div>
What happened:
When the div with ref is there, the test fails and the console shows
console.error node_modules/react-dom/cjs/react-dom.development.js:9643 The above error occurred in the <WebhookSender> component: in WebhookSender (at WebhookSender.spec.js:18) in MuiThemeProvider (at WebhookSender.spec.js:17) Consider adding an error boundary to your tree to customize error handling behavior. Visit https://fb.me/react-error-boundaries to learn more about error boundaries. console.error node_modules/fbjs/lib/warning.js:33 Warning: Can't call setState (or forceUpdate) on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method. in WebhookSender (at WebhookSender.spec.js:18) in MuiThemeProvider (at WebhookSender.spec.js:17)
Reproduction:
Problem description:
I find that if I have the ref in my react component, after the button click, the DOM (look at PrettyDOM(Rendered.container)) becomes just an empty div , thus failing the subsequent getByText.
Is there known issue with having ref for such tests?