मैं कोड का एक वर्ग है कि इतनी तरह node-sync उपयोग कर रहा है है:परीक्षण तुल्यकालिक कोड
function funcA() {
return new Promise(function(resolve, reject) {
Sync(function() {
return funcB.sync();
}, function (err, result) {
if(err) {
reject(err);
} else {
resolve(result);
}
});
}
इस कोड मोचा + चाय का उपयोग कर परीक्षण किया जाता है
it("should return array", function() {
return funcA().then(function(result) {
expect(result).to.be.an.instanceof(Array);
});
});
यह ठीक दो महीने के पहले काम किया , लेकिन अब यह परीक्षण हमेशा समय समाप्त होता है:
Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.
मैंने अब तक क्या प्रयास किया है:
- बजाय
done()
का उपयोग कर एक वादा synchronize.js
- बढ़ती टाइमआउट साथ
node-sync
की जगह लौटने
क्या मुझे पता चला है कि इस परीक्षण के expect(...
हिस्सा है, वास्तव में, कहा जाता है की जा रही है , लेकिन मोचा के बाद ही परीक्षण खत्म हो जाता है। इससे कोई फर्क नहीं पड़ता कि वर्तमान में टाइमआउट अंतराल सेट किया गया है, को Error: timeout
संदेश मिलने के बाद हमेशा ~ 20 मिलीसेकंड कहा जा रहा है।
मैंने परीक्षण फ़ाइल के शीर्ष पर setInterval(function(){}, 10)
जोड़कर समस्या को ठीक किया। मुझे यह जानना है कि यह क्यों काम करता है और अगर इसे ठीक करने का कोई बेहतर तरीका है?
[संपादित करें] ऐसा लगता है कि यह एक नोड-संस्करण विशिष्ट समस्या है। टेस्ट 0.12.4 पर विफल रहता है लेकिन 0.10.38 पर सही ढंग से चलता है।
[संपादित करें] वास्तविक कोड here उपलब्ध है।
बहुत अजीब लगता है .. मैं इसे पुन: पेश कर सकता हूं लेकिन यह पता नहीं लगा सकता कि समस्या क्या है। एक लंबा शॉट हो सकता है लेकिन हो सकता है कि नोड-सिंक में खोदें, इन जिथब टिकटों को देखें [यहां] (https://github.com/ybogdanov/node-sync/issues/41) और [यहां] (https: // github। com/ybogdanov/node-sync/issues/36) –
btw यह आमतौर पर परीक्षण में असीमित रूप से कोड चलाने के लिए सबसे अच्छा अभ्यास (imho) है। मुझे पता है कि आप इस ब्लॉक सिंक को चलाने का प्रयास कर रहे हैं, लेकिन शायद चाई-ए-वादा मॉड्यूल को आज़माएं ताकि आप 'done' –