ユニットテストをしたい。 この関数では、私はCoをジェネレータ関数で使用しています。 エラーが、私はそれをキャッチし、私は偽の主張を作る私のユニットテストでエラージェネレータ機能を使用したモカテストのサイレントエラー
でCBを呼び出すが、モカが、それだけの時間外に、それを報告しませんが発生した場合:明らかに
//function to test
function start(data, cb) {
co(function * coStart() {
yield Promise.reject('err'); // yield error for sake of demo
}).then(function(result){
return cb(null, result);
}).catch(function (err) {
// we get here
return cb(err);
});
}
// mocha test
it('fails on incorrect data', function(done){
MyModel.start({'foo': 'bar'}, function(err, res){
assert.equal(err, 'err2'); //this fails but mocha just stops here and times out
done();
});
});
私はここで何か間違っていますか?
私はあなたがモカに約束を返却し、テストで行われ、コールバックを省略することができます知っているが、それは、コールバック
Thx man、私はついにこれを手に入れました! setImmediateが動作します。これを使用することには何か意味があります。なぜなら、通常のフローをハックするような気分になるからです。 – Ernie
代わりに使用できる['dezalgo'](https://github.com/npm/dezalgo)よりクリーンなコードを提供する可能性があります。私は自分自身で「完全な約束」の解決策を望んでいますが、それはいつも選択肢ではないことを認識しています。D – robertklep
Thx!確かめます – Ernie