2014-08-27 9 views
10

चलाने से पहले मोचा प्रतीक्षा करें कुछ मोचा परीक्षण प्राप्त करें जिनके लिए पूर्व फ़ंक्शन कॉल से डेटा की आवश्यकता होती है, लेकिन फिर क्योंकि यह एक webservice का उपयोग कर रहा है, और यह चाहते हैं कि यह अगले परीक्षण को चलाने से पहले पूर्व निर्धारित समय के लिए प्रतीक्षा करें, कुछ जैसे:अगले परीक्षण

var global; 

it('should give some info', function(done) { 
    run.someMethod(param, function(err, result) { 
    global = result.global 
    done(); 
    }); 
}); 

wait(30000); // basically block it from running the next assertion 

it('should give more info', function(done) { 
    run.anotherMethod(global, function(err, result) { 
    expect(result).to.be.an('object'); 
    done(); 
    }); 
}); 

किसी भी विचार की सराहना की जाएगी। धन्यवाद!

उत्तर

13

सेटटाइमआउट निश्चित रूप से मदद कर सकता है, लेकिन ऐसा करने के लिए "क्लीनर" तरीका हो सकता है। एसिंक कोड का परीक्षण करते समय टाइमआउट त्रुटियों से बचने के लिए docs actually saysthis.timeout(delay) का उपयोग करने के लिए, इसलिए सावधान रहें। this.timeout() एक एकल परीक्षण के समय समाप्ति का विस्तार होगा

var global; 

it('should give some info', function(done) { 
    run.someMethod(param, function(err, result) { 
    global = result.global 
    done(); 
    }); 
}); 



it('should give more info', function(done) { 
    this.timeout(30000); 

    setTimeout(function() { 
     run.anotherMethod(global, function(err, result) { 
     expect(result).to.be.an('object'); 
     done(); 
     }); 
    }, 30000); 
}); 
+0

धन्यवाद, फ्लॉप, जो अभी के लिए काम करेंगे। जब मैं परीक्षण कर रहा था, तो मैंने अपने सेटटाइमआउट को गलत तरीके से लिखा था। धन्यवाद :) –

+1

मैंने सोचा कि सवाल लगातार दो परीक्षणों को आदेश देने के लिए था? – Zlatko

+0

ज़्लात्को, सवाल प्रश्न में अगले परीक्षण के निष्पादन में देरी के बारे में था। इस उदाहरण में this.settimeout एविड टाइमआउट त्रुटि है कि अगर मैं सही हूं तो डिफ़ॉल्ट रूप से 20000 मोचा में है। – Flops

7

है, यह आपके सवाल का जवाब नहीं है। this.timeout() आपके वर्तमान परीक्षण का समय निर्धारित करता है।

लेकिन चिंता न करें, आपको वैसे भी ठीक होना चाहिए। टेस्ट समानांतर में नहीं चल रहे हैं, वे श्रृंखला में किए जाते हैं, इसलिए आपको अपने वैश्विक दृष्टिकोण में कोई समस्या नहीं होनी चाहिए।

+0

असल में, वे समानांतर में भागते हैं ना? या समांतर समसामयिक समान नहीं है? https://mochajs.org/ – jntme

+1

आप सही हैं, समांतर! == async। मोचा परीक्षण विशेष रूप से, वे श्रृंखला में भागते हैं। एक, दूसरे की तुलना में, अगले की तुलना में। – Zlatko

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