2016-02-10 12 views
8

में किसी अन्य सरणी के करीब होने के लिए फ्लोट संख्याओं की एक सरणी की अपेक्षा करें, मैं एक जावास्क्रिप्ट फ़ंक्शन का परीक्षण कर रहा हूं, यह देखने के लिए कि क्या लौटा सरणी में अपेक्षित आउटपुट वाले सरणी के समान तत्व होते हैं:जैस्मीन

expect(myArray).toEqual(expectedArray); 

यह त्रुटिहीन रूप से काम करता है अगर myArray और अपेक्षित ऐरे में केवल पूर्णांक होते हैं, लेकिन फ्लोटिंग-पॉइंट सटीक त्रुटियों के कारण कम से कम एक फ्लोट मौजूद होता है। toBeCloseTo सरणी पर काम नहीं कर रहा है।

वर्तमान में मैं एक पाश सदस्य के लिहाज से जाँच करने के लिए करने के लिए कर रहा हूँ:

for (var i = 0; i < myArray.length; i++) { 
    expect(myArray[i]).toBeCloseTo(expectedArray[i]); 
} 

... लेकिन वहाँ यह करने के लिए एक क्लीनर तरीका है? यदि परीक्षण किसी भी कारण से विफल रहता है, तो आउटपुट घृणित त्रुटि संदेशों की मात्रा के साथ फूला हुआ है।

+0

चेक यह तुम क्या चाहते करने के लिए प्रकट होता है toBeCloseTo'। – HBP

+1

हो सकता है कि आप [ArrayContaining] (https://github.com/jasmine/jasmine/blob/master/src/core/asymmetric_equality/ArrayContaining.js) matcher पर एक नज़र डालें, लूप को अनुकूलित करें और अपना खुद का मैचर बनाएं। – Sonata

उत्तर

6

निम्नलिखित कोड आपके प्रश्न का उत्तर चाहिए:

actual.every((x, i) => expect(x).toBeCloseTo(expected[i])); 
0

इस प्रयास करें: `बाहर

for (let i=0; i<returnedArray.length; i++){ 
    if(expectedArray.indexOf(returnedArray[i]) === -1){ 
     console.log("not a match") 
     break; 
    }else{ 
     console.log("it's a match") 
     break; 
    } 
}