私はジャスミン1.3を使用しているジャスミンノード1.14.5を使用していますが、プロンプトで正しく動作するためにはruns/waitFor
の問題が発生しています。ジャスミン1.3でラン/ウェイトフォース後に約束を完了
特定のテストでは、特定の状態が起こるのを待つためにruns/waitFor
に連絡したいと思います。発生すると、私が返すプロミスを実行します。しかし、function(success, fail)
パラメータで渡すPromiseを構築しようとすると、runs/waitFor
のコードは呼び出されません。しかし、プロミスが直接解決されれば、それは機能します。前者のオプションはうまくいかないという考えはありますか?
いくつかの例を与えることを、次のように正常に動作します:
it("should support async execution of test preparation and expectations", function(done) {
var p = Promise.resolve("boo")
.then(function() {
var p2 = Promise.resolve("whatever");
runs(function() {
flag = false;
value = 0;
intId = setInterval(function() {
console.log(value);
if (++value == 3) { clearInterval(intId); flag = true; }
}, 500);
});
waitsFor(function() {
return flag;
}, "The Value should be incremented", 5000);
runs(function() {
expect(value).toEqual(3);
});
return p2;
});
p.then(function() {
done();
}).catch(function(err) {
done(err);
});
});
しかし、その一方で、これは動作しませんruns/waitsFor
が問題なく呼ばれているがために、コールバックは内部のない操作を行います。
it("should support async execution of test preparation and expectations", function(done) {
var p = Promise.resolve("boo")
.then(function() {
return new Promise(function (fulfil, reject) {
runs(function() {
flag = false;
value = 0;
intId = setInterval(function() {
console.log(value);
if (++value == 3) {
clearInterval(intId);
flag = true;
}
}, 500);
});
waitsFor(function() {
return flag;
}, "The Value should be incremented", 5000);
runs(function() {
expect(value).toEqual(3);
fulfil();
});
});
});
p.then(function() {
done();
}).catch(function(err) {
done(err);
});
});
を
私はまた、オフチャンスで次のことを試しましたが、どちらもうまく動作しません。前の例と同じように動作します。
it("should support async execution of test preparation and expectations", function(done) {
var p = Promise.resolve("boo")
.then(function() {
var outerFulfil;
var outerReject;
var p2 = new Promise(function(fulfil, reject) {
outerFulfil = fulfil;
outerReject = reject;
});
runs(function() {
flag = false;
value = 0;
intId = setInterval(function() {
console.log(value);
if (++value == 3) { clearInterval(intId); flag = true; }
}, 500);
});
waitsFor(function() {
return flag;
}, "The Value should be incremented", 5000);
runs(function() {
expect(value).toEqual(3);
outerFulfil();
});
return p2;
});
p.then(function() {
done();
}).catch(function(err) {
done(err);
});
});
どのように解決するか考えてみませんか?最初の例は動作しますが、私が望むように振る舞いません。なぜなら、waitsFor
の後のアサーションが実行されたら、約束が成就してほしいからです。
乾杯、 ギャルダー