New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

wix-eventually

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

wix-eventually

retrying execution of function for tests

latest
Source
npmnpm
Version
2.3.0
Version published
Weekly downloads
2.1K
-32.13%
Maintainers
1
Weekly downloads
 
Created
Source

wix-eventually Build Status npm version

Retries promise until timeout expires in a linear fashion with delays defined by interval. Given this module is inteded to be used only within tests it does not provide more robust strategies like retry-as-promised, but instead is designed to be predictable and fit within timeouts defined for your tests.

Uses defaults:

  • timeout: 10s;
  • interval: 200ms;

install

npm install --save-dev wix-eventually

usage

const eventually = require('wix-eventually')
const {expect} = require('chai')

describe('example', () => {
  it('should retry', async () => {
    let hasCompleted = false
    setTimeout(() => (hasCompleted = true), 1000)

    await eventually(() => {
      expect(hasCompleted).to.equal(true)
    })
  })
})

Api

(fn, opts): Promise

Wraps a promise that retries a function n times with 200 ms delay in between;

Arguments:

  • fn - sync function or thenable.
  • opts - optional object with:
    • timeout - timeout for retrying, ms;
    • interval - retry interval, ms.

with(defaults): (fn, opts)

Returns a function with provided defaults - {timeout, interval}.

Note regarding testing

Using this library might cause an anti-pattern of writing tests that take a long time to run. For example, if the code is using setTimeout, it's "easy" to use eventually to check the result. In case the timeout is set for 3 seconds, the test will now take 3 seconds. Instead, the code should be written in such way that the setTimeout functionality can be modified in the test to either run synchronously or with a very short timeout value.

FAQs

Package last updated on 17 Feb 2020

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