ts-sinon
sinon library extension to stub whole object and interfaces
Last updated 2 years ago by ttarnowski .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install ts-sinon 
SYNC missed versions from official npm registry.

ts-sinon

Sinon extension providing functions to:

  • 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

Installation

npm install --save-dev ts-sinon or yarn add --dev ts-sinon

Object stubs example

Importing stubObject function:

  • import single function:
import { stubObject } from "ts-sinon";
  • import as part of sinon singleton:
import * as sinon from "ts-sinon";

const stubObject = sinon.stubObject;

Stub all object methods:

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

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

testStub.method.returns("stubbed");

expect(testStub.method()).to.equal("stubbed");

Partial stub:

class Test {
    public someProp: string = "test";
    methodA() { return "A: original" }
    methodB() { return "B: original" }
}

const test = new Test();
// second argument must be existing class method name, in this case only "methodA" or "methodB" are accepted.
const testStub = stubObject<Test>(test, ["methodA"]);

expect(testStub.methodA()).to.be.undefined;
expect(testStub.methodB()).to.equal("B: original");

Stub with predefined return values (type-safe):

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

const test = new Test();
const testStub = stubObject<Test>(test, { method: "stubbed" });

expect(testStub.method()).to.equal("stubbed");

Interface stubs example

Importing stubInterface function:

  • import single function:
import { stubInterface } from "ts-sinon";
  • import as part of sinon singleton:
import * as sinon from "ts-sinon";

const stubInterface = sinon.stubInterface;

Interface stub (stub all methods):

interface Test {
    method(): string;
}

const testStub = stubInterface<Test>();

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

testStub.method.returns("stubbed");

expect(testStub.method()).to.equal("stubbed");

Interface stub with predefined return values (type-safe):

interface Test {
    method(): string;
}

// method property has to be the same type as method() return type
const testStub = stubInterface<Test>({ method: "stubbed" });

expect(testStub.method()).to.equal("stubbed");

Object constructor stub example

Importing stubConstructor function:

  • import single function:
import { stubConstructor } from "ts-sinon";
  • import as part of sinon singleton:
import * as sinon from "ts-sinon";

const stubConstructor = sinon.stubConstructor;

Object constructor stub (stub all methods):

  • without passing predefined args to the constructor:
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);
  • with passing predefined args to the constructor:
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");

Sinon methods

By importing 'ts-sinon' you have access to all sinon methods.

import sinon, { stubInterface } from "ts-sinon";

const functionStub = sinon.stub();
const spy = sinon.spy();
// ...

or

import * as tsSinon from "ts-sinon"

const functionStub = tsSinon.default.stub();
const spy = tsSinon.default.spy();
const tsStubInterface = tsSinon.stubInterface<T>();

// ...

Packages

Dependencies:
  1. Microsoft/TypeScript
  2. TypeStrong/ts-node
  3. sinonjs/sinon
Dev Dependencies:
  1. mochajs/mocha
  2. chaijs/chai
  3. domenic/sinon-chai

Tests

npm test

Current Tags

  • 2.0.1                                ...           latest (a month ago)

31 Versions

  • 2.0.1                                ...           a month ago
  • 2.0.0                                ...           a month ago
  • 1.2.1                                ...           a month ago
  • 1.2.0                                ...           6 months ago
  • 1.1.0                                ...           6 months ago
  • 1.0.25                                ...           8 months ago
  • 1.0.24                                ...           a year ago
  • 1.0.23                                ...           a year ago
  • 1.0.22                                ...           a year ago
  • 1.0.21                                ...           a year ago
  • 1.0.20                                ...           a year ago
  • 1.0.19                                ...           a year ago
  • 1.0.18                                ...           a year ago
  • 1.0.17                                ...           2 years ago
  • 1.0.16                                ...           2 years ago
  • 1.0.15                                ...           2 years ago
  • 1.0.14                                ...           2 years ago
  • 1.0.13                                ...           2 years ago
  • 1.0.12                                ...           3 years ago
  • 1.0.11                                ...           3 years ago
  • 1.0.10                                ...           3 years ago
  • 1.0.9                                ...           3 years ago
  • 1.0.8                                ...           3 years ago
  • 1.0.7                                ...           3 years ago
  • 1.0.6                                ...           3 years ago
  • 1.0.5                                ...           3 years ago
  • 1.0.4                                ...           3 years ago
  • 1.0.3                                ...           3 years ago
  • 1.0.2                                ...           3 years ago
  • 1.0.1                                ...           3 years ago
  • 1.0.0                                ...           3 years ago
Maintainers (1)
Downloads
Today 2
This Week 2
This Month 457
Last Day 0
Last Week 13
Last Month 91
Dependencies (4)
Dev Dependencies (8)

Copyright 2014 - 2016 © taobao.org |