我在使用QUnit + JsMockito測試Javascript對象時發生一些方法調用斷言時遇到問題。基本的基礎架構工作正常:Qunit,JsHamcrest(Jsmockito依賴)和Jsmockito在套件定義中正確初始化。jsMockito方法調用斷言不按預期方式工作
我想斷言調用「數據存儲#創建」方法與對象作爲參數,如下所示:
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(等於[目標對象])」
我首先懷疑是該對象的平等是不工作如我所料,證明的是,在穿過原始數據類型,而不是對象的調用時工作斷言:
this.dataStore.create(this.value); //actual code
verify(dataStoreMock).create('aaa'); //test
我試圖用jsHamcrest「equalTo」匹配沒有成功(截至jsMockito文檔曝光),以及:
verify(dataStoreMock).create(equalTo({name: 'aaa'}));
有沒有人對如何使這種說法的工作任何想法?
非常感謝您清除此問題。請在此功能合併後隨時發佈更新。 – 2011-05-24 14:49:02
它現在在jshamcrest的頭上:https://github.com/danielfm/jshamcrest – 2011-05-25 08:08:25
已經更新了我的測試,它的工作! – 2011-05-25 15:44:14