enzymejs / enzyme

JavaScript Testing utilities for React
https://enzymejs.github.io/enzyme/
MIT License
19.96k stars 2.01k forks source link

Error: Method “text” is meant to be run on 1 node. 0 found instead #2545

Open smrititaneja18 opened 2 years ago

smrititaneja18 commented 2 years ago

Your environment

Test

API

Version

library version
enzyme 3.11.0
react 16.13.1
react-dom 16.13.1
react-test-renderer ^10.0.4

Adapter

I am getting this type of error while executing enzyme test case in React. Below is my test case. Can anyone please help.

context("testing case1", () => {

it("contains correct context notification text", () => {
const date = "2019-05-05"
const testOrder = Object.assign({}, XYZ, { type: ABC, status: A })
const textExpected = abc ${moment(date).format("DD.MM.YYYY")}
expect(renderCtxNotification(testOrder).find("section").text()).to.equal(textExpected)
})
})
const renderCtxNotification = (orderData) => mount(resolveOrderStatusContents(orderData).ctxNotification.renderContents(orderData)

**Below is the error:

Error: Method “text” is meant to be run on 1 node. 0 found instead. at ReactWrapper.single (node_modules/enzyme/src/ReactWrapper.js:1168:13) at ReactWrapper.text (node_modules/enzyme/src/ReactWrapper.js:629:17)**

section is present in .jsx file:

<section>
            <H4><LocalizedText locKey="text1" /></H4>
            <BodyText>
              <LocalizedTextWithPlaceholders locKey="text2" placeholders={[formatDate(date)]} />
            </BodyText>
          </section>
ljharb commented 2 years ago

The code you provided has a syntax error; can you share the actual jsx being passed into mount? (i suggest avoiding over abstractions that hide away passing jsx directly into an enzyme wrapper, since they make tests much harder to understand and maintain)

What does .debug() say on the wrapper?

smrititaneja18 commented 2 years ago

i cannot just paste whole .jsx file here but this is the only chunk of code i have added (the section part) and while debugging my test case is going in default case. the condition is not satisfied and hence it is going in default case.

ljharb commented 2 years ago

I understand, but it's pretty hard to make a reproducible test case without the entire component code, and the complete test code (including abstractions).