2016-01-07 18 views
6

Tôi đã thử tất cả các giải pháp trong this answer nhưng không có tiện ích nào phù hợp với tôi.Không thể đặt thời gian chờ cho hoa nhài

Tôi đang sử dụng jasmine v2.3.2jasmine-core v2.3.4

Khi tôi làm bài kiểm tra này:

jasmine.DEFAULT_TIMEOUT_INTERVAL= 999999; 

describe('tests content controller', function(){ 
//... 

    fit('/content should return 200',function(done){ 
     request(app) 
     .get('/content?type=script') 
     .set('Authorization', "bearer " + requestor.token) 
     .set('Accept', 'application/json') 
     .expect(200) 
     .end(function (err, res) { 
      if (err) done.fail(err); 
      expect(res.statusCode).toBe(200); 
      console.log('got here'); 
      console.log(jasmine.DEFAULT_TIMEOUT_INTERVAL); //prints 30000 
      done(); 
     }) 
    },999999); 

tôi nhìn thấy trên giao diện điều khiển của tôi rằng yêu cầu chỉ mất 3000 mili giây. Tôi thậm chí nhìn thấy nhật ký got here của tôi.

Nhật ký hiển thị thời gian chờ in ra 30000 và không phải 999999 như tôi mong đợi.

tôi cũng có được một thất bại cho thử nghiệm này với thông điệp:

Message: 
    Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL. 
    Stack: 
    Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL. 
     at Timer.listOnTimeout [as ontimeout] (timers.js:110:15) 
1 spec, 1 failure 
Finished in 33.069 seconds 

Có một số thiết lập ban đầu gây ra đa số này ~ 30 giây chậm trễ. Ứng dụng phải kết nối với một số cơ sở dữ liệu và chạy hàm beforeAll trong describe.

Làm cách nào để ngăn chặn hoa nhài khỏi thời gian như thế này?

+1

'jasmine.DEFAULT_TIMEOUT_INTERVAL' phải ở trên mã cấp cao nhất. Bạn đã thử đặt nó bên ngoài bất kỳ 'mô tả' nào chưa? –

+0

@ just-boris yes. Tôi đã cập nhật mã của mình để hiển thị rằng – Houseman

Trả lời

6

Hãy thử thiết lập các jasmine.DEFAULT_TIMEOUT_INTERVAL trong một beforeAll, vì khoảng thời gian chờ là thiết lập lại cho mỗi it khối:

describe("testing timeout", function() { 
    beforeAll(function() { 
     jasmine.DEFAULT_TIMEOUT_INTERVAL = 999999; 
    }); 

    fit('should have custom timeout', function(){ 
     console.log(jasmine.DEFAULT_TIMEOUT_INTERVAL); //prints 999999 
    }); 
}) 

Ngoài ra, hãy nhớ rằng setTimeout đang sử dụng một số nguyên 32 bit để lưu trữ sự chậm trễ đằng sau hậu trường , do đó, các giá trị số nguyên vượt quá điều này sẽ gây ra tràn. Xem bài đăng này: Infinite jasmine timeout

+1

Hành vi hiện tại của Jasmine (2.5.38) không giống như bạn mô tả nó. Một thời gian chờ tùy chỉnh được đặt trong khối 'beforeAll' hiện diện trong mỗi khối' it'. – willydee

Các vấn đề liên quan