Skip to content

Instantly share code, notes, and snippets.

@isaacs
Created December 31, 2019 20:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save isaacs/0b48c7f010bf20614a070d3f91f2a015 to your computer and use it in GitHub Desktop.
Save isaacs/0b48c7f010bf20614a070d3f91f2a015 to your computer and use it in GitHub Desktop.
diff --git a/lib/test.js b/lib/test.js
index dbd559a..4bc4147 100644
--- a/lib/test.js
+++ b/lib/test.js
@@ -1060,6 +1060,35 @@ class Test extends Base {
return this.ok(!obj, message, extra)
}
+ doesNotEmit (emitter, event, message, extra) {
+ this.currentAssert = Test.prototype.doesNotEmit
+
+ if (message && typeof message === 'object')
+ extra = message, message = ''
+
+ if (!message)
+ message = `expect ${event} event to not be emitted`
+
+ if (!extra)
+ extra = {}
+
+ const handler = () => handler.emitted = true
+ handler.emitted = false
+ emitter.once(event, handler)
+ extra.at = stack.at(Test.prototype.doesNotEmit)
+ extra.stack = stack.captureString(80, Test.prototype.doesNotEmit)
+ this[_beforeEnd].push([_doesNotEmit, emitter, event, handler, message, extra])
+ }
+
+ [_doesNotEmit] (emitter, event, handler, message, extra) {
+ if (!handler.emitted)
+ return this.pass(message, extra)
+ else {
+ emitter.removeListener(event, handler)
+ return this.fail(message, extra)
+ }
+ }
+
emits (emitter, event, message, extra) {
this.currentAssert = Test.prototype.emits
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment