Mocha 2.4.5とを使用してブラウザでテストを設定しようとしています。非同期アサーションでmochaエラーフォーマットを修正する方法
失敗アサーションは、有用なテスト失敗の理由を表示する必要があります。
しかし、同じアサーションがjQuery Ajaxコールバックのコンテキストで行われると、代わりにキャッチアサーションエラーが発生します。
は、次の例を見てみましょう:
mocha.setup('bdd');
var url = 'http://localhost/api/v2/People';
describe('ajax',() => {
var that1 = this;
it('Passing async assertion', (done) => {
$.ajax({ url: url }).done(data => {
should(1).be.eql(1);
done();
});
});
it('Failing async assertion', (done) => {
var that2 = this;
$.ajax({ url: url }).done(data => {
should(0).be.eql(1);
done();
});
});
it('Failing sync assertion', (done) => {
should(0).be.eql(1);
done();
});
});
mocha.run();
「非同期アサーションを渡す」を通過して、テストランナーの出力にきれいに見えます。
「同期の主張を失敗」は失敗し、私は(結構です)失敗した「非同期アサーションに失敗」、しかし便利なスタックトレースに
Fail sync assertion ‣
AssertionError: expected 0 to equal 1
at Assertion.fail (http://path/to/should.js:220:17)
at Assertion.Object.defineProperty.value (http://path/to/should.js:292:19)
at Context. (tests.js:337:26)
を得るが、スタックトレースはuslessです。
Fail async assertion ‣
Error: Uncaught AssertionError (http://path/to/should.js:200)
私はthat1またはthat2にAJAXコンテキストを設定すると周りにプレイしましたが、それは違いはありません。
非同期アサーションが機能するようにテストケースをフォーマットする他の方法はありますか?
EDIT
私は私は私の質問に持っているようにモカのためのドキュメントの書式非同期テストを提案するが、私はそれらのだと思う非同期をシミュレートする
mocha.setup('bdd');
describe('ajax',() => {
var that1 = this;
it('Failing async assertion', (done) => {
setTimeout(() => {
should(0).be.eql(1);
done();
}, 100);
}).async = true;
it('Failing sync assertion', (done) => {
should(0).be.eql(1);
done();
});
});
mocha.run();