maybe-chai
Chai 插件用于 Maybe 单子。适用于任何单子库。
安装
npm install maybe-chai --save-dev
// Before all the tests (use --require in mocha)
import chai from 'chai'
import maybeChai from 'maybe-chai'
chai.use( maybeChai() )
适配到你的 Maybe 库
Maybe-chai 默认情况下开箱即用,适用于 true-myth
库。如果你想使用其他库,你需要传递一个适配器(我们有 预先准备好的适配器)。
可以通过将一个对象传递给 maybeChai()
来配置一个适配器,该对象遵循以下签名
maybeChai( {
match: (maybe: Maybe<T>, cases: MatchCases<T, U>) => U,
isMaybe: (maybe: Maybe<T>) => Boolean,
} )
type MatchCases<T, U> = {
Just: (value: T) => U,
Nothing: () => U,
}
类型不会严格执行,但你应该检查你的测试是否正常工作。
然而,这个库的目标是为每个流行的单子库提供一个适配器。
你可以 在这里查看适配器列表。
用法
just
断言目标是 Maybe.Just 的实例,使用提供的 match
函数。
expect( Maybe.just(5) ).to.be.a.just() // OK!
expect( Maybe.just(5) ).to.be.just(5) // OK!
expect( Maybe.nothing() ).to.be.just(5) // fails
expect( Maybe.nothing() ).to.not.be.just(5) // OK!
expect( 'string' ).to.be.just(5) // fails
expect( 'string' ).to.not.be.just(5) // OK!
.just
也会对单子的内容进行深度比较。
expect( Maybe.just({a: 'test'}) ).to.be.just({a: 'test'})
此外,.just
会将链中任何后续断言的目标更改为原始 Just 对象内部的值。
expect( Maybe.just( { status: 200 } ) ).to.be.a.just()
.and.to.have.property( 'status', 200 ) // OK
nothing
断言目标是 Maybe.Nothing 的实例,使用提供的 match
函数。
expect( Maybe.nothing() ).to.be.nothing() // OK!
expect( Maybe.just(5) ).to.be.nothing() // fails
expect( Maybe.just(5) ).to.not.be.nothing() // OK!
expect( 'string' ).to.be.nothing() // fails
expect( 'string' ).to.not.be.nothing() // OK!
支持的库
虽然该库允许你为任何库提供适配器,但它的目标是为 Javascript 中每个流行的单子库提供一个食谱 在这里。
- True Myth
- Sanctuary
- TSMonad
- Folktale
- Monet
- Funfix
- Crocks
- KudoJS
- Purify
如果你的库不在此列表中,欢迎你提出请求,并感谢你的 PR!