chaijs / chai

BDD / TDD assertion framework for node.js and the browser that can be paired with any testing framework.
https://chaijs.github.io
MIT License
8.11k stars 694 forks source link

use() function only returns plugin first time #1603

Open ramicohen303 opened 6 months ago

ramicohen303 commented 6 months ago

Related to #1569

I have multiple test files, each loading its own copy of chai and chai-http plugin. The first file works fine, all others fail. If I comment out the first file, the second file works fine, all others fail.

Looking at the code, I believe the issue cause is in chai.js, in the "use" function. The "used" array is global, and once a plugin is added to it, it cannot be added again. However, the exports object is instantiated on every call, but only the first instance gets the plugin.

For now, I created a factory function that returns a singleton chai and chai-http, and I use it in every test file. However, I believe this should be fixed properly.

koddsson commented 3 months ago

@ramicohen303; could you write up a quick failing test in pseudo code for this? It would be helpful so we can make sure we are fixing the correct thing.