jsMockito方法调用断言无法按预期工作

| 使用QUnit + JsMockito测试Javascript对象时,我无法做出一些方法调用断言。基本基础结构正常运行:Qunit,JsHamcrest(Jsmockito依赖项)和Jsmockito在套件定义中已正确初始化。 我想使用对象作为参数来声明对“ dataStore#create \”方法的调用,如下所示:
var store = {create: function(arg) {}};

test(\"save()\", function() {
  var dataStoreMock = mock(store);

  var objectUnderTest = { value: \'aaa\',
                        dataStore: dataStoreMock,
                        save: function() {this.dataStore.create({name: this.value});}}

objectUnderTest.save();
verify(dataStoreMock).create({name: \'aaa\'});
});
我得到断言错误:\“想要但未调用:obj.create(等于[object Object])\” 我的第一个怀疑是对象相等性没有按我预期的那样工作,证明是该断言在传递原始数据类型而不是对象的调用上使用时有效:
this.dataStore.create(this.value); //actual code
verify(dataStoreMock).create(\'aaa\'); //test
我也尝试使用jsHamcrest \'equalTo \'匹配器(在jsMockito文档中公开)也没有成功:
verify(dataStoreMock).create(equalTo({name: \'aaa\'}));
是否有人对如何使这种断言起作用有任何想法?     
已邀请:
断言是在检查对象本身,而不是其属性,并且JsHamcrest \'equalTo \'匹配器不会对对象进行深入检查(它与javascript \'== \'运算符相同)。 您可以简单地检查它是否是一个对象:
verify(dataStoreMock).create(object());
或者有一个JsHamcrest匹配器\'hasMember \',您可以将其用作:
verify(dataStoreMock).create(hasMember(\'name\'));
如果您使用的是jshamcrest 0.6.4或更高版本(或当前的HEAD),则还可以通过将匹配器作为hasMember的第二个参数传递来验证成员:
verify(dataStoreMock).create(hasMember(\'name\', \'aaa\'));
verify(dataStoreMock).create(hasMember(\'name\', equalTo(\'aaa\')));
    

要回复问题请先登录注册