2017-01-20 33 views
7

अपग्रेड के बाद, मोचा भी यहाँ एक साधारण परीक्षण नहीं चल सकता कोडमुझे क्यों मिल रहा है "त्रुटि: समाधान विधि overspecified है"?

const assert = require('assert'); 

it('should complete this test', function (done) { 
    return new Promise(function (resolve) { 
    assert.ok(true); 
    resolve(); 
    }) 
    .then(done); 
}); 

मैं here

मैं समझ गया कि अब यह एक अपवाद फेंकता Error: Resolution method is overspecified. Specify a callback * or * return a Promise; not both.

लेकिन यह कैसे से इस कोड को ले लिया है इसे काम करने के लिए? मुझे समझ नहीं आया। मैं

node -v 6.9.4 

mocha -v 3.2.0 

कैसे एक नया और सही प्रारूप में अब इस कोड को चलाने के लिए कर रहे हैं?

उत्तर

6

बस
.then(done); ड्रॉप और function()

आप लौट रहे हैं आप के मामले में कॉलबैक का इस्तेमाल किया था वादा तो कॉल किया एक निरर्थक है, क्योंकि यह त्रुटि संदेश

बड़े संस्करणों में में कहा साथ function(done) की जगह एसिंक विधियों की तरह

it ('returns async', function(done) { 
    callAsync() 
    .then(function(result) { 
     assert.ok(result); 
     done(); 
    }); 
}) 

अब आपके पास एक प्रोम लौटने का विकल्प है आईएसई

it ('returns async', function() { 
    return new Promise(function (resolve) { 
    callAsync() 
     .then(function(result) { 
      assert.ok(result); 
      resolve(); 
     }); 
    }); 
}) 

लेकिन का उपयोग कर दोनों भ्रामक है (यहाँ https://github.com/mochajs/mocha/issues/2407 देख उदाहरण के लिए)

2

मोचा के लिए अनुमति देता है या तो एक कॉलबैक का उपयोग करें:

it('should complete this test', function (done) { 
    new Promise(function (resolve) { 
    assert.ok(true); 
    resolve(); 
    }) 
    .then(done); 
}); 

या एक वादा वापसी:

it('should complete this test', function() { 
    return new Promise(function (resolve) { 
    assert.ok(true); 
    resolve(); 
    }); 
}); 

आप दोनों नहीं कर सकते हैं।

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