sinon-ts
v2.0.0
Published
sinon library extension to stub whole object and interfaces
Downloads
3,571
Maintainers
Readme
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
- You have a version of Node.js >= v8.4.0
- 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
- Apache 2.0, (LICENSE-APACHE / http://www.apache.org/licenses/LICENSE-2.0)
- MIT (LICENSE-MIT / http://opensource.org/licenses/MIT)
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.