Open RomkeVdMeulen opened 4 years ago
This is an issue in vCurrent with EventManager
, that we don't have a teardown mechanism in EventManager
. Though I think it should be easy to add, could you help with this?
Maybe the first thing is let's have a look at a repro. Could you help share one?
The difficulty is that this only seems to occur under heavy load. I'll see if I can put something together that will reliably show the error.
I've managed to put something together that shows a handler being called multiple times when it shouldn't be. In this case it's caused by aurelia-dialog and not click.delegate
, but the principle is the same. I based it on the esnext skeleton since I wanted to base my reproduction on Karma.
https://github.com/RomkeVdMeulen/aurelia-testing-delegate-bug
To reproduce:
npm install
jspm install
gulp test
Note that problems occur in app.spec.js
but not counter.spec.js
.
I'm submitting a bug report
Please tell us about your environment:
Operating System: Linux (Ubuntu 18.04.3)
Node Version: 8.16.1
NPM Version: 6.8.0
JSPM OR Webpack AND Version JSPM 0.16.53
Browser: Chrome 77
Language: TypeScript 3.5.3
Current behavior: When running a lot of tests, every so often I will get errors because an event handler (usually a click handler) that has been registered with
click.delegate
is called twice. I'm assuming this is because the handler registered in the preceeding test hasn't been cleaned up in time. I'm callingComponentTester.dispose()
in my tear down but it's not enough.Expected/desired behavior: If a test cannot be reliably cleaned up synchronously,
ComponentTester.dispose()
should return a promise that resolves when cleanup is complete. Most testing frameworks these days support returning a promise from a tear down and waiting for this to complete.