2016-03-09 19 views
7

Sto creando una lib sui vettori in dattiloscritto. Il mio primo test è fallito :).Oggetto uguaglianza in dattiloscritto

È correlato all'uguaglianza degli oggetti in TypeScript/JavaScript ma non riesco a trovare un modo per rendere il test verde. Nessuna uguaglianza degli oggetti è menzionata nel documento ufficiale del dattilografo http://www.typescriptlang.org/Handbook#classes.

Qualcuno potrebbe darmi una mano per favore?

Questo è il codice sorgente.

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; 

poi ho un test di unità in questa classe come segue

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)); 
    }); 
}); 

Quando viene eseguito ottiene il seguente errore

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

Funziona su [jsfiddle] (https://jsfiddle.net/3VuGs/206/). – Aaron

risposta

6

Il test case dovrebbe funzionare. Here it is passing on jsfiddle.

Tuttavia, sembra che il codice vero e proprio stava usando toBe() invece di toEqual(), dal momento che il messaggio di errore dice "to be" e non "to equal":

Atteso Vector ({x: 3, y: 4}) di essere Vector ({x: 3, y: 4}).

Uso toBe() controllerà che l'identità dei due oggetti sono uguali (cioè ===), che ovviamente non sono. Sicuramente vuoi toEqual() che fa un profondo confronto di valori.

+1

errore stupido da parte mia, ho provato aEqual ma ho dimenticato di salvare il file ... @Aaron, grazie mille per il tuo aiuto. –

4

parità oggetto tipografico è lo stesso di uguaglianza oggetto JavaScript. Questo perché TypeScript is just JavaScript.

+0

thx per aver sottolineato che buone risorse. ho imparato un sacco di cose da quello stivale. :) @basarat –