打字稿中的对象平等

时间:2016-03-09 22:27:34

标签: typescript equality

我正在使用typescript中的向量创建一个lib。我的第一次测试失败了:)。

它与TypeScript / JavaScript中的对象相等有关,但我找不到使测试变为绿色的方法。在打字稿的官方文档from here中没有提到对象相等。

有人可以帮我一把吗?

这是源代码。

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

执行时获得以下错误

Application.Current.Exit ();

2 个答案:

答案 0 :(得分:6)

您的测试用例应该有效。 Here it is passing on jsfiddle

但是,您的实际代码似乎使用toBe()而不是toEqual(),因为失败消息显示的是"to be"而不是"to equal"

  

预期的矢量({x:3,y:4}) Vector({x:3,y:4})。

使用toBe()将检查两个对象的身份是否相同(即===),这显然不是。toEqual()。你肯定希望CREATE TABLE [dbo].[Table] ( [Id] INT NOT NULL PRIMARY KEY, ... other columns ... ) 对值进行深度比较。

答案 1 :(得分:5)

TypeScript对象相等性与JavaScript对象相等。这是因为TypeScript is just JavaScript