Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

sinon-ts

achingbrain1kApache-2.0 OR MIT2.0.0TypeScript support: included

sinon library extension to stub whole object and interfaces

interface mock, interface stub, node, sinon, stub, ts-sinon, typescript, typescript sinon, typescript stub

readme

codecov CI

sinon library extension to stub whole object and interfaces

About

A fork of ts-sinon that lets you BYO sinon. Can probably be retired if ttarnowski/ts-sinon#255 is ever merged.

  • stub all object methods
  • stub interface
  • stub object constructor

Prerequisites

  1. You have a version of Node.js >= v8.4.0
  2. You have installed Typescript

Example

Stub all object methods

import Sinon from 'sinon'
import { stubObject } from 'ts-sinon'

class Test {
  method() { return 'original' }
}

const test = new Test()
const testStub = stubObject<Test>(test)

testStub.method.returns('stubbed')

expect(testStub.method()).to.equal('stubbed')

Example

Partial stub

import Sinon from 'sinon'
import { stubObject } from 'ts-sinon'

class Test {
  method() { return 'original' }
}

const test = new Test()
const testStub = stubObject<Test>(test, {
  method: Sinon.stub().returns('stubbed')
})

expect(testStub.method()).to.equal('stubbed')

Example

Interface stub (stub all methods)

import Sinon from 'sinon'
import { stubInterface } from 'ts-sinon'

interface Test {
  method(): string
}

const testStub = stubInterface<Test>()

expect(testStub.method()).to.be.undefined

testStub.method.returns('stubbed')

expect(testStub.method()).to.equal('stubbed')

Example

Interface stub with predefined return values (type-safe)

import Sinon from 'sinon'
import { stubInterface } from 'ts-sinon'

interface Test {
  method(): string
}

// method property has to be the same type as method() return type
const testStub = stubInterface<Test>({
  method: Sinon.stub().returns('stubbed')
})

expect(testStub.method()).to.equal('stubbed')

Example

Object constructor stub (stub all methods)

  • without passing predefined args to the constructor:
import Sinon from 'sinon'
import { stubConstructor } from 'ts-sinon'

class Test {
  public someVar: number = 10

  method(): string {
    return 'value'
  }
}

// type will be guessed automatically
const testStub = stubConstructor(Test)

expect(testStub.method()).to.be.undefined

testStub.method.returns('stubbed')

expect(testStub.method()).to.equal('stubbed')

expect(testStub.someVar).to.equal(10)

testStub.someVar = 20

expect(testStub.someVar).to.equal(20)

Example

Passing predefined args to the constructor

import Sinon from 'sinon'
import { stubConstructor } from 'ts-sinon'

class Test {
  constructor(public someVar: string, y: boolean) {}
  // ...
}

// it won't allow to pass incorrect args
const testStub = stubConstructor(Test, 'someValue', true)

expect(testStub.someVar).to.equal('someValue')

Install

$ npm i sinon-ts

API Docs

License

Licensed under either of

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

changelog

2.0.0 (2023-11-01)

⚠ BREAKING CHANGES

  • method map values must now be wrapped in Sinon.stub().returns()

Features

  • support stubbed properties as well as methods (#12) (42413b2)

1.0.2 (2023-11-01)

Dependencies

  • dev: bump sinon from 14.0.2 to 17.0.1 (#11) (7e668b2)

1.0.1 (2023-11-01)

Dependencies

  • dev: bump aegir from 37.12.1 to 41.1.4 (#9) (756bea6)

1.0.0 (2022-10-14)

Bug Fixes

Trivial Changes

Documentation