Socket
Book a DemoInstallSign in
Socket

promise-to-test

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

promise-to-test

simple set of tools for making things you probably shouldn't do in tests seem nicer. Such as waiting (setInterval) for things to complete, and waiting before continuing actions (setTimeout). Very promise focused, depends on Q.

0.0.5
latest
Source
npmnpm
Version published
Weekly downloads
0
-100%
Maintainers
1
Weekly downloads
 
Created
Source

promise-to-test

Simple set of utils for making async tests more sane using promises.

Reasoning

I found myself writing some really awful code because I wanted to wait for something to happen, but I did not want to hook into the particular methods causing it. I.e., I wanted my test to act like a user, just keep checking and give up after a certain amount of time. It looked like this :

var it = setInterval(function(){
  if($('myCondition').length>0) {
    clearInterval(it)

    // carry on testing

    done()
  }
}, 10)

This didn't make me happy, and it was actually nested two or three levels deep, which I'll let you imagine. Apart from aesthetics, this approach also doesn't give much information when it does time out, and we're abandoning all the lovely assertion techniques at our disposal for the condition.

If we rewrite this code using my new tools (ok, just waitFor), it looks like this :

waitFor(function(){
  assert.ok($('myCondition').length>0)
})
.then(function(){
  // carry on testing
})
.then(function(){done()}, done)

So this is actually a similar amount of code, but...

  • code reads chronologically top to bottom
  • we use a real assertion and pass an assertion error on failure
  • nesting / waiting again will not bother me at all, things will extend downward, not rightward

API

waitFor(condition, timeout, frequency)

  • condition : a function using assertions to test for something
  • timeout : optional, the amount of time to wait before failing, defaults to 1000 milliseconds
  • frequency : optional, the amount of time to wait before checking again, defaults to 10 milliseconds

Runs the condition function every frequency milliseconds until either condition runs without errors or timeout milliseconds have passed. Returns a promise that resolves if condition runs without errors and rejects with the last error thrown by condition if timeout is reached.

justWait(timeout)

  • timeout : the amount of time to wait for (duh)

Returns a promise which will resolve in timeout milliseconds.

See Also

chai-as-promised and mocha-as-promised are both wonderful ways to clean up async tests with promises, you can even avoid the nasty .then(function(){done()}, done) at the end of your promise chain!

Keywords

test

FAQs

Package last updated on 24 Jan 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.