私は、いくつかのREST APIから情報を取得する私の関数の単体テストを書いています。私はramda
Future
タイプ(source)を使用しています。
次のテストは、奇妙な作品:Chai 'expect'がコールバック内で実行されない
it('should return Maybe of Nothing', done => {
let response = {
status: 200,
json:() => {
return {
results: []
}
}
}
let fakeFetch = {
fetch:() => {
return new Promise((resolve, reject) => {
resolve(response)
})
}
}
// String -> Future Error Maybe
let result = Utils.fetchGiantBomb(faker.random.word(), fakeFetch.fetch);
result.fork(err => {
assert.fail(err, 'expected to return Maybe of Nothing');
done();
}, data => {
expect(Maybe.isJust(data)).to.be.true;
done();
})
})
data
タイプMaybe.Nothing
でなければなりません。 Maybe.isNothing
がテストに合格すると思うが、テストが失敗したときに何が起こるか見たいので、それをMaybe.isJust
に設定してfalseを返す。これをしばらく見てから、expect
が失敗したときには、エラー処理(err
コールバック)にジャンプし、アサートを実行するのをやめて(2000msのタイムアウトになります)気づきました。
Future
ソースでは、成功コールバックが失敗すると、失敗コールバックが実行されることがわかりました。このテストを完了して、データが予期した通りではないことを表示するにはどうすればよいですか?