Run/waitsForブロックに頼らずにこのテストに合格するにはどうすればよいですか?
it("cannot change timeout", function(done) {
request("http://localhost:3000/hello", function(error, response, body){
expect(body).toEqual("hello world");
done();
});
});
この機能のプルリクエストを送信しました( https://github.com/mhevery/jasmine-node/pull/142 )
it("cannot change timeout", function(done) {
request("http://localhost:3000/hello", function(error, response, body){
expect(body).toEqual("hello world");
done();
});
}, 5000); // set timeout to 5 seconds
Jasmine docs に従って、仕様で直接設定できます。
describe("long asynchronous specs", function() {
var originalTimeout;
beforeEach(function() {
originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
});
it("takes a long time", function(done) {
setTimeout(function() {
done();
}, 9000);
});
afterEach(function() {
jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
});
});
グローバルJasmine-Nodeタイムアウトを設定するには、次を実行します。
jasmine.getEnv().defaultTimeoutInterval = timeoutYouWouldPrefer;// e.g. 15000 milliseconds
README doc の誤った情報にもかかわらず、jasmine.DEFAULT_TIMEOUT_INTERVALを設定することでそれが行われたと主張しているにもかかわらず、デバッグを介して.getEnv()部分を把握した開発者Gabe Hicksに感謝します。
1つのit()だけにカスタムタイムアウトを設定する場合は、タイムアウト(ミリ秒)を3番目の引数として(文字列ステートメントと関数の後に)渡してみてください。 here が実行されている例がありますが、カスタムタイムアウトがJasmineのデフォルトよりも長い場合はどうなるかわかりません。失敗することを期待しています。
it
関数の最後の引数として追加できるようになりました:
describe('my test', function(){
it('works', function(done){
somethingAsync().then(done);
}, 10000); // changes to 10 seconds
});
Angularでは、これを記述ブロックの外側に配置します。
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
これは、.spec.tsファイル内のすべてのテストに適用されます
なぜsetTimeout()
をスパイしないのですか?
何かのようなもの:
var spy = spyOn(window, 'setTimeout').andCallFake(function (func, timeout) {
expect(timeout).toEqual(2500);
func();
});
setTimeOut(function () { ... }, 2500);
expect(spy).toHaveBeenCalled();
追加:jasmine.DEFAULT_TIMEOUT_INTERVAL = yourTime;
ヘルパーファイルで機能しました。