Chai-Kekka
Chai の Kekka プラグイン
インストールと使用法
Node: npm install --save-dev chai-kekka
を実行して使用できます。
const chai = require("chai")
const chaiKekka = require("chai-kekka")
chai.use(chaiKekka)
ドキュメント
テスト値は Result 型
result
プロパティを使用して、テスト値が Result
クラスのインスタンスであるかどうか確認できます。
expect(Success('Some String')).to.be.a.result
expect(Failure(new Error('Failure...'))).to.be.a.result
テスト値が Result Success
success
プロパティを使用して、テスト値が Success
型の Result
クラスのインスタンスであるかどうか確認できます。
// Positive
expect(Success('Success String')).to.be.a.success // OK
expect(Failure(new Error('Failure...'))).to.be.a.success // FAIL
expect('Not a result').to.be.a.success // FAIL
// Negative
expect(Success('Success String')).not.to.be.a.success // FAIL
expect(Failure(new Error('Failure...'))).not.to.be.a.success // OK
expect('Not a result').not.to.be.a.success // FAIL with 'expected 'Not a result' to be an instance of Result'
テスト値が Result Failure
failure
プロパティを使用して、テスト値が Failure
型の Result
クラスのインスタンスであるかどうか確認できます。
// Positive
expect(Success('Success String')).to.be.a.failure // FAIL
expect(Failure(new Error('Failure...'))).to.be.a.failure // OK
expect('Not a result').to.be.a.failure // FAIL
// Negative
expect(Success('Success String')).not.to.be.a.failure // OK
expect(Failure(new Error('Failure...'))).not.to.be.a.failure // FAIL
expect('Not a result').not.to.be.a.failure // FAIL with 'expected 'Not a result' to be an instance of Result'
Result オブジェクトの関連値のテスト
Result オブジェクトの関連値をテストする方法は 2 つあります。
successWrapping
とfailureWrapping
メソッドassociatedValue
プロパティ
successWrapping
と failureWrapping
const error = new Error('Failure message')
expect(Failure(error)).to.be.a.failureWrapping(error) // OK
expect(Failure(error)).to.be.a.successWrapping(error) // FAIL - not a Success
expect(Failure(error)).to.be.a.failureWrapping('some other value') // FAIL
expect(Success('Success String')).to.be.a.successWrapping('Success String') // OK
expect(Success('Success String')).to.be.a.failureWrapping('Success String') // Fail - not a Failure
// equality modifiers can be used, such as deep, on successWrapping and failureWrapping
expect(Success({ a: '423' })).to.be.a.deep.successWrapping({ a: '423' })
associatedValue
associatedValue
プロパティは、result
、success
、failure
プロパティの後に使用できます。これにより、続くチェーン内のアサーションの対象が、関連付けられている結果値に変更されます。
expect(Success('Success String')).to.be.a.success
.with.associatedValue.that.equals('Success String') // OK
expect(Success({ a: '423' })).to.be.a.success
.with.associatedValue.that.deep.equals({ a: '423' }) // OK - equality modifiers accepted
expect(Success({ a: '423' })).to.be.a.failure
.with.associatedValue.that.deep.equals({ a: '423' }) // FAIL - not a failure
expect(Success({ a: '423' })).to.be.a.result
.with.associatedValue.that.deep.equals({ a: '423' }) // OK
expect(Success('Success String')).to.have.associatedValue.that.equals('Success String') // FAILS
// associatedValue must be after either a result, success or failure assertion property