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\'}));
是否有人对如何使这种断言起作用有任何想法?
没有找到相关结果
已邀请:
1 个回复
皇小福另届
或者有一个JsHamcrest匹配器\'hasMember \',您可以将其用作:
如果您使用的是jshamcrest 0.6.4或更高版本(或当前的HEAD),则还可以通过将匹配器作为hasMember的第二个参数传递来验证成员: