У меня возникли проблемы с утверждением вызова некоторых методов при тестировании объекта Javascript с помощью QUnit + JsMockito. Базовая инфраструктура работает нормально: 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'}));
Есть ли у кого-нибудь идеи о том, как заставить работать такое утверждение?