2016-03-09 10 views
7

मैं टाइपस्क्रिप्ट में वैक्टर पर एक lib बना रहा हूं। मेरा पहला परीक्षण असफल रहा :)।टाइपस्क्रिप्ट में ऑब्जेक्ट इक्विटी

यह टाइपस्क्रिप्ट/जावास्क्रिप्ट में ऑब्जेक्ट समानता से संबंधित है लेकिन मुझे परीक्षण हरा बनाने का कोई तरीका नहीं मिल रहा है। टाइपस्क्रिप्ट के आधिकारिक दस्तावेज़ http://www.typescriptlang.org/Handbook#classes में कोई वस्तु समानता का उल्लेख नहीं किया गया है।

क्या कोई मुझे कृपया हाथ दे सकता है?

यह स्रोत कोड है।

class Vector { 
    x: number; 
    y: number; 

    constructor(x: number, y: number) { 
     this.x = x; 
     this.y = y; 
    } 

    add(that: Vector) { 
     return new Vector(this.x + that.x, this.y + that.y); 
    } 
} 

export = Vector; 

तब मैं जब निष्पादित के रूप में

var Vector = require("../lib/vector") 

describe("vector", function() { 
    it("should add another vector", function() { 
    var v1 = new Vector(1, 1); 
    var v2 = new Vector(2, 3); 
    expect(v1.add(v2)).toEqual(new Vector(3, 4)); 
    }); 
}); 

इस प्रकार निम्न त्रुटि

Failures: 
1) vector should add another vector 
1.1) Expected Vector({ x: 3, y: 4 }) to be Vector({ x: 3, y: 4 }). 
+0

यह [jsfiddle] (https://jsfiddle.net/3VuGs/206/) पर काम करता है। अच्छे संसाधनों को इंगित करने के लिए – Aaron

उत्तर

6

आपका परीक्षण केस काम करना चाहिए। Here it is passing on jsfiddle

हालांकि, यह, आपके वास्तविक कोड toEqual() के बजाय toBe() उपयोग कर रहा था लगता है के बाद से विफलता संदेश कहते हैं "to be" और नहीं "to equal":

उम्मीद वेक्टर ({x: 3, वाई: 4}) होने के लिए वेक्टर ({x: 3, y: 4})।

toBe() का उपयोग करना है कि दो वस्तुओं की पहचान एक ही (यानी ===) कर रहे हैं की जाँच करेगा, जो वे स्पष्ट रूप से नहीं कर रहे हैं। आप निश्चित रूप से toEqual() चाहते हैं जो मूल्यों की गहरी तुलना करता है।

+1

मेरी तरफ बेवकूफ गलती, मैंने कोशिश की कोशिश की लेकिन मैं फ़ाइल को सहेजना भूल गया ... @Aaron, thx आपकी मदद के लिए बहुत कुछ। –

4

टाइपप्रति वस्तु समानता प्राप्त जावास्क्रिप्ट वस्तु समानता रूप में ही है इस वर्ग पर एक इकाई परीक्षण किया है। ऐसा इसलिए है क्योंकि TypeScript is just JavaScript

+0

thx। मैंने उस बूट से बहुत सारी चीजें सीखीं। :) @basarat –