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'}));
この種のアサーションを機能させる方法について誰かが何かアイデアを持っていますか?