maybe-chai
Maybe Monad 的 Chai 外掛。可適用於任何 Monad 函式庫。
安裝
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,
}
類型不會被嚴格強制執行,但您應該檢查您的測試是否正常運作。
然而,此函式庫的目標是為市面上最受歡迎的 Monad 函式庫提供轉接器。
您可以在這裡查看轉接器列表。
用法
just
透過使用提供的 match
函數,斷言目標是 Maybe.Just 的實例。
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
也會深度比較 monad 的內容。
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
透過使用提供的 match
函數,斷言目標是 Maybe.Nothing 的實例。
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 中最受歡迎的 monad 函式庫的每一個提供一個配方
- True Myth
- Sanctuary
- TSMonad
- Folktale
- Monet
- Funfix
- Crocks
- KudoJS
- Purify
如果您的函式庫沒有在這裡,歡迎您提出請求,並且我們將感謝 PR!