[英]Jasmine spy expects to be called with "Object(...)"
我正在完成从 Jasmine 1.3 到 2.0 的迁移。 到目前为止,我已经重构了大部分代码以符合 2.0 的更新语法。 但是,某些类型的测试仍然失败。
简而言之,我的测试如下所示:
var obj = new CustomCriteria();
spyOn(my, "function");
my.function(obj);
expect(my.function).toHaveBeenCalledWith({ big: "fat object" });
我的CustomCriteria
类:
var CustomCriteria = function() {
this.big = "fat object";
};
测试失败,原因如下:
Expected spy function to have been called with [ Object({ big: "fat object" }) ] but actual calls were [ ({ big: "fat object" }) ].
请注意期望如何有一个“ Object
”环绕它,但第二个没有。 这个测试在 Jasmine < 2.0 中没有失败,但在我更新 Jasmine 后现在失败了。 我怎样才能解决这个问题?
更新:我修改了通过new
function
与对象字面量语法创建新对象的function
,看起来__proto__
s 是不同的。 也许这会影响茉莉花的平等比较?
var x = {a:1}; var y ={a:1};
x 和 y 将无法在 jasmine 中进行比较(我相信它使用 ===),因为 x 和 y 只是对对象文字的引用。
expect(my.function).toHaveBeenCalledWith(obj)
不会失败,因为对象引用会匹配。 如果您没有要比较的确切对象引用,您可以使用 my.function.calls 检查调用的参数以检查某些字段的相等性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.