chai-generator

これは、ES6 / ES2015 で導入された Javascript ジェネレーターのテストを簡素化するための chai のプラグインです。
ジェネレーターの yield / return のシグネチャは少し理解しにくいため、テストが煩雑になることがあります。
expect(generator.next()).to.deep.equal({ done: false, value: 15 })
expect(generator.next()).to.deep.equal({ done: true, value: -1 })
chai-generator
は、このような煩わしさを解消し、テストを意図したとおりに記述できるようにします。
expect(generator).to.yield(15)
expect(generator).to.return(-1)
セットアップ
node.js / io.js
var chai = require('chai')
chai.use(require('chai-generator'))
ブラウザ
<script src="chai.js"></script>
<script src="chai-generator.js"></script>
アサーション
.yield
generator.next()
から値が yield されることをアサートします。返された値は yield されたとはみなされません。
expect(generator).to.yield()
expect(generator).to.yield(1)
expect(generator).not.to.yield('missing')
expect(generator.next(10)).to.yield(10)
generator.should.yield()
generator.should.yield(1)
generator.should.not.yield('missing')
generator.next(10).should.yield(10)
assert.yield(generator, 1)
assert.notYield(generator, 'missing')
assert.yield(generator.next(10), 10)
.yield
は .deep
チェーンと連携します。
expect(generator).to.deep.yield([1, 2, 3])
generator.should.deep.yield([1, 2, 3])
assert.deepYield([1, 2, 3])
.yield
は他のアサーションとチェーンすることもできます(assert では利用できません)。
expect(generator).to.yield().and.equal(1)
generator.should.yield().and.equal(1)
.return
generator.next()
から値が返されることをアサートします。yield された値は返されたとはみなされません。
expect(generator).to.return()
expect(generator).to.return(1)
expect(generator).not.to.return('missing')
expect(generator.next(10)).to.return(10)
generator.should.return()
generator.should.return(1)
generator.should.not.return('missing')
generator.next(10).should.return(10)
assert.return(generator)
assert.return(generator, 1)
assert.notReturn(generator, 'missing')
assert.return(generator.next(10), 10)
.return
は .deep
チェーンと連携します。
expect(generator).to.deep.return([1, 2, 3])
generator.should.deep.return([1, 2, 3])
assert.deepReturn([1, 2, 3])
.return
は他のアサーションとチェーンすることもできます(assert では利用できません)。
expect(generator).to.return().and.equal(1)
generator.should.return().and.equal(1)
ライセンス
chai-generator
は MITライセンス の下で公開されています。