我正在使用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 ();
答案 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。