Programing

jasmine-node 비동기 사양에서 시간 제한을 어떻게 변경합니까?

lottogame 2020. 10. 23. 07:29
반응형

jasmine-node 비동기 사양에서 시간 제한을 어떻게 변경합니까?


run / waitsFor 블록에 의존하지 않고이 테스트를 통과하려면 어떻게해야합니까?

it("cannot change timeout", function(done) {

     request("http://localhost:3000/hello", function(error, response, body){

         expect(body).toEqual("hello world");

         done();
     });
});

Jasmine 문서 에 따라 사양에서 직접 설정할 수 있습니다 .

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;
    });
});

이 기능에 대한 풀 요청을 보냈습니다 ( 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-Node 시간 제한을 설정하려면 다음을 수행하십시오.

jasmine.getEnv().defaultTimeoutInterval = timeoutYouWouldPrefer;// e.g. 15000 milliseconds

jasmine.DEFAULT_TIMEOUT_INTERVAL을 설정하여 완료되었다고 주장 하는 README 문서 의 잘못된 정보에도 불구하고 디버깅을 통해 .getEnv () 부분을 알아 낸 개발자 Gabe Hicks에게 감사드립니다 .

하나의 it ()에 대해서만 사용자 지정 시간 제한을 설정하려면 시간 제한 (밀리 초)을 세 번째 인수 (문자열 문과 함수 뒤)로 전달할 수 있습니다. 여기 에 수행되는 예가 있지만 사용자 지정 시간 제한이 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;도우미 파일에서 나를 위해 일했습니다.


다음 파일에서 j $ .DEFAULT_TIMEOUT_INTERVAL을 10000으로 변경하십시오. npm \ node_modules \ jasmine-core \ lib \ jasmine-core

참고URL : https://stackoverflow.com/questions/9867601/how-do-i-change-the-timeout-on-a-jasmine-node-async-spec

반응형