TypeScript中的对象相等性

10

我正在使用TypeScript创建一个关于向量的库。我的第一个测试失败了:)。

这与TypeScript / JavaScript中的对象相等性有关,但我无法找到一种方法使测试通过。在TypeScript官方文档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 }).

它在jsfiddle上运行良好。 - Aaron Beall
2个回答

7

你的测试用例应该可行。在这里它通过了jsfiddle

然而,似乎你的实际代码是使用了toBe()而不是toEqual(),因为失败信息说"to be"而不是"to equal"

期望 Vector({ x: 3, y: 4 }) to be Vector({ x: 3, y: 4 })。

使用toBe()将检查两个对象的身份是否相同(即===),而它们显然不同。你肯定想要深度比较值的toEqual()


-3

8
这个回答对问题没有帮助。 - HyperionX

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接