Jasmine间谍希望用"对象(...)"调用

geo*_*off 7 javascript testing jasmine angularjs

我正在完成从Jasmine 1.3到2.0的迁移.到目前为止,我已经重构了大部分代码以符合2.0的新语法.但是,某种测试仍然失败.

简而言之,我的测试看起来像这样:

var obj = new CustomCriteria();

spyOn(my, "function");
my.function(obj);
expect(my.function).toHaveBeenCalledWith({ big: "fat object" });
Run Code Online (Sandbox Code Playgroud)

我的CustomCriteria班级:

var CustomCriteria = function() {
    this.big = "fat object";
};
Run Code Online (Sandbox Code Playgroud)

测试失败,具体如下:

Expected spy function to have been called with [ Object({ big: "fat object" }) ] but actual calls were [ ({ big: "fat object" }) ].
Run Code Online (Sandbox Code Playgroud)

请注意期望如何Object包围它,但第二个没有.这个测试在<1.0的Jasmine中没有失败,但是在我更新Jasmine之后现在失败了.我怎样才能解决这个问题?

更新:我通过创建一个新的对象修修补补围绕new荷兰国际集团一function对对象文字语法,它看来,__proto__s为不同的.也许这影响了Jasmine的平等比较?

man*_*nji 7

在版本 2 之前,如果对象具有相同的属性和值,则对象相等(请参阅v1.3.1 代码

从版本 2 开始,还比较了对象构造函数(请参阅v2.0 代码)。

在您的情况下:CustomCriteria并且{}没有相同的构造函数。

PS:异常消息也更改为在其中包含构造函数名称。