を編集します。これは、ここで説明するのと同じ問題です:https://github.com/facebook/jest/issues/2980。エラーのためdone()
が呼び出されないため、jamsinのタイムアウトに達します。それで大丈夫です。しかし、大丈夫ではないことは、ジャスミン/嫌がらせが起こったエラーを報告すべきだということです。jest:Promiseでエラーメッセージが失われる
注:ソースコードの例は hereです。これは、エラーを含む
// file: foo.js
function foo(done) {
const p = new Promise((resolve, reject) => {
setTimeout(() => {
//const xxx = 2;
resolve(xxx);
}, 100);
});
p.then(data => {
console.log(data);
done()
})
}
exports.foo = foo;
:xxx
変数が定義されていないので、エラーが しなければならない
はPromise
を作成し、約束が解決されたとき done
コールバックを呼び出し、以下の機能を、考えてみましょう育った。
私はインポートこの機能を実行すると、スクリプトでそれを実行した場合:
// file: index.js
const foo = require('./foo').foo;
foo(() => {});
とnode v8.6.0
でスクリプトを実行します。
node index.js
私が予想されるエラー(ReferenceError: xxx is not defined
)を取得
/home/dfroger/repo/dfroger/issue/jest-promise-error/foo.js:5
resolve(xxx);
^
ReferenceError: xxx is not defined
at Timeout.setTimeout [as _onTimeout] (/home/dfroger/repo/dfroger/issue/jest-promise-error/foo.js:5:21)
at ontimeout (timers.js:469:11)
at tryOnTimeout (timers.js:304:5)
at Timer.listOnTimeout (timers.js:264:5)
今はの単体テストを書く10:私はこれ以上xxx being not defined
に関するエラーメッセージを取得
./node_modules/.bin/jest
を::
// file: foo.test.js
const foo = require('./foo').foo
describe('async',() => {
it('run foo', done => {
foo(done);
});
});
そしてjest v21.2.1
でそれを実行し
async
✕ run foo (5004ms)
● async › run foo
Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
at node_modules/jest-jasmine2/build/queue_runner.js:64:21
at ontimeout (timers.js:469:11)
at tryOnTimeout (timers.js:304:5)
at Timer.listOnTimeout (timers.js:264:5)
Test Suites: 1 failed, 1 total
Tests: 1 failed, 1 total
Snapshots: 0 total
Time: 5.574s, estimated 6s
Ran all test suites.
は私がjest
を使用欠場しましたか?それはjest
バグですか? jest
が常にエラーメッセージを正しく報告するようにするにはどうすればよいですか?