1

As you may know, ES2020 is introducing private class methods and fields, similar to what we have currently in typescript (albeit a different keyword... TS -> private | JS -> #methodName or #fieldName).

Link to the RC (stage 3): https://github.com/tc39/proposal-private-methods

We can currently use this with a babel plugin: https://babeljs.io/docs/en/babel-plugin-proposal-private-methods

Tech stack:

I work with Jest and Enzyme for unit testing.

The problem:

The issue I'm facing is that whenever I import a class using these fields or methods and I simply try to reference the wrapper.instance() calling them to test them, I can see that the private method is not visible in the instance (which is correct, since it's private).

An example error: #someMethod is undefined

How would you go on approaching this?

Would you skip testing the private methods or is there a solution?

skyboyer
  • 22,209
  • 7
  • 57
  • 64
leelium
  • 47
  • 1
  • 1
  • 6

1 Answers1

0

While debugging my UT I saw that they get a prefix to their names of __private_XXX_ when XXX is their "index" of appearance in the class.

so you can access #someMethod by using __private_XXX_someMethod but that requires you to check that "index" and to update it every time the class changes the indexes.

Alon Segal
  • 142
  • 11