2012-12-09 7 views
6

क्या कोई दावा पुस्तकालय है जो मुझे दिखाएगा कि गहराई से तुलना करते समय दो वस्तुओं के बीच अंतर क्या हैं?मतभेदों के साथ गहरे बराबर नोडजेज

मैंने चाई का उपयोग करने की कोशिश की है, लेकिन यह सिर्फ मुझे बताती है कि वस्तुएं अलग हैं लेकिन नहीं। लेकिन रुकिए, कुछ और है: नोड के ज़ोर के लिए एक ही बात है ....

+0

आप किस परीक्षण ढांचे का उपयोग कर रहे हैं? क्या आप स्विच करने के लिए खुले हैं? –

+0

मैं मोचा का उपयोग कर रहा हूं, मैं बदलाव के लिए खुला हूं। लेकिन मुझे वास्तव में मोचा पसंद है;) – foobarcode

+0

वैसे यह मजाकिया है - मैं आपको मोचा का उपयोग करने का सुझाव देने जा रहा था। :) तो शायद मैं यहां उलझन में हूं क्योंकि मोचा आपको एक असफलता विफलता पर वास्तविक और अपेक्षित मानों के बीच स्ट्रिंग diffs देता है। मुझे लगता है कि यह दावा पुस्तकालय से स्वतंत्र है, हालांकि यह मेरे लिए must.js के साथ ठीक है। क्या आप यही चाहते हैं, या जब आप कोई दावा विफल नहीं होते हैं तब भी आप diffs प्रिंट करना चाहते हैं? –

उत्तर

2

चाय 1.5.0 और 1.8.1 मोचा, मेरे लिए निम्नलिखित काम करता है का उपयोग करना:

var expect = require('chai').expect; 

it("shows a diff of arrays", function() { 
    expect([1,2,3]).to.deep.equal([1,2,3, {}]); 
}); 

it("shows a diff of objects", function() { 
    expect({foo: "bar"}).to.deep.equal({foo: "bar", baz: "bub"}); 
}); 

परिणामों में:

✖ 2 of 2 tests failed: 

1) shows a diff of arrays: 

    actual expected 

    1 | [ 
    2 | 1, 
    3 | 2, 
    4 | 3, 
    5 | {} 
    6 | ] 

2) shows a diff of objects: 

    actual expected 

    { 
    "foo": "bar", 
    "baz": "bub" 
    } 

यहां क्या नहीं दिखाया गया है कि आउटपुट लाल/हरे रंग को हाइलाइट किया गया है जहां लाइनें अप्रत्याशित/गायब हैं।

3

Substack के difflet शायद आपको क्या चाहिए

अद्यतन है https://github.com/andreyvit/json-diff https://github.com/algesten/jsondiff https://github.com/samsonjs/json-diff

+2

सूचक के लिए धन्यवाद, अगर मैं सिर्फ एक कमांड लाइन उपकरण की तलाश में था जो कि सही होगा। लेकिन मैं इकाई परीक्षण के दौरान उपयोग करने के लिए एक दावा समारोह की तलाश में हूं। – foobarcode

2

this StackOverflow answer पर आधारित, मेरा मानना ​​है कि यह समस्या मेरे लिए हो रही थी क्योंकि मेरे परीक्षण असीमित थे।

मुझे मिल गया डिफ निम्नलिखित पैटर्न का उपयोग करके फिर से सही ढंग से काम:

try { 
    expect(true).to.equal(false); 
    done(); // success: call done with no parameter to indicate that it() is done() 
} catch(e) { 
    done(e); // failure: call done with an error Object to indicate that it() failed 
} 
0

हाँ है:

var assert = require('assert-diff') 

it('diff deep equal with message', function() { 
    assert.deepEqual({pow: "boom", same: true, foo: 2}, {same: true, bar: 2, pow: "bang"}, "this should fail") 
}) 

परिणामों में: assert-diff

आप इसे इस तरह का उपयोग कर सकते

1) diff deep equal with message: 
    AssertionError: this should fail 
{ 
- bar: 2 
+ foo: 2 
- pow: "bang" 
+ pow: "boom" 
} 
संबंधित मुद्दे