sinon library extension to stub whole object and interfaces
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
- You have a version of Node.js >= v8.4.0
- You have installed Typescript
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')
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')
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')
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')
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)
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')
$ npm i sinon-ts
Licensed under either of
- Apache 2.0, (LICENSE-APACHE / http://www.apache.org/licenses/LICENSE-2.0)
- MIT (LICENSE-MIT / http://opensource.org/licenses/MIT)
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.