2016-01-07 13 views
6

के लिए टाइमआउट सेट नहीं कर सकता है मैंने this answer में सभी समाधानों का प्रयास किया है, लेकिन उनमें से कोई भी मेरे लिए काम नहीं करता है।चमेली

मैं jasmine v2.3.2 और jasmine-core v2.3.4

उपयोग कर रहा हूँ मैं इस परीक्षण करते हैं:

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

मैं अपने सांत्वना है कि अनुरोध केवल 3000 मिलीसेकंड लगे पर देखते हैं। मैं अपने got here लॉग भी देखता हूं।

लॉग जो दिखाता है कि टाइमआउट 30000 प्रिंट करता है और 999999 जैसा कि मुझे उम्मीद है।

मैं भी संदेश के साथ इस परीक्षण के लिए एक विफलता मिलती है:

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 

कुछ प्रारंभिक सेटअप जो इस के बहुमत ~ 30 सेकंड की देरी का कारण बनता है नहीं है। एप्लिकेशन को कई डेटाबेस से कनेक्ट करना है और फ़ंक्शन describe में चलाएं।

मैं इस तरह के समय से जैस्मीन को कैसे रोक सकता हूं?

+1

'jasmine.DEFAULT_TIMEOUT_INTERVAL' शीर्ष स्तर कोड पर होना चाहिए। क्या आपने इसे किसी भी 'वर्णन' के बाहर रखने की कोशिश की है? –

+0

@ बस-बोरीस हां। मैंने यह दिखाने के लिए अपना कोड अपडेट किया है कि – Houseman

उत्तर

6

एक beforeAll में jasmine.DEFAULT_TIMEOUT_INTERVAL की स्थापना, के बाद से समय समाप्त अंतराल प्रत्येक it ब्लॉक के लिए रीसेट का प्रयास करें:

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

इसके अलावा, कि setTimeout एक 32 बिट पूर्णांक उपयोग कर रहा है पर्दे के पीछे देरी स्टोर करने के लिए ध्यान में रखना , इसलिए इससे अधिक पूर्णांक मान ओवरफ़्लो का कारण बनेंगे। यह पोस्ट देखें: Infinite jasmine timeout

+1

जैस्मीन का वर्तमान (2.5.38) व्यवहार जैसा आपने वर्णन नहीं किया है। ''पहले से' ब्लॉक में एक कस्टम टाइमआउट सेट प्रत्येक 'ब्लॉक' में मौजूद है। – willydee

संबंधित मुद्दे