在使用 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'}));
有人对如何使这种断言起作用有任何想法吗?