Как издеваться над селектором jQuery в тесте Google JS

#javascript #unit-testing #testing

#javascript #модульное тестирование #тестирование

Вопрос:

Я начал использовать Google js test и застрял, пытаясь выполнить модульное тестирование селектора jquery ниже — на самом деле я хочу проверить, была ли вызвана функция добавления, но для этого требуется селектор.

‘jQuery’ — это объект jQuery ($), который я вводю в функцию.

 JQuery('#'   containerElementId).append('some html');
  

Я создал объект, который я использую в качестве макета для jQuery
this.jQuery = {
добавить: createMockFunction()
};

Я хотел бы проверить, что append вызывается:

 expectCall(this.jQuery(_).append)();
-OR-
expectCall(this.jQuery('#fakeselector').append)();
  

Это выдает ошибку:
Ошибка типа: свойство ‘jQuery’ объекта # не является функцией
СБОЙ

Что мне нужно сделать с литералом объекта this.jQuery, чтобы обойти селектор?

Ответ №1:

Обнаружил, что вы можете создать макет, подобный этому:

 var jqueryEmptyStub = {
    append: createMockFunction()
};

var jQueryMock = function (rootSelector) {
    return jqueryEmptyStub;
};

var myObject = anObject(jQueryMock );
expectCall(jqueryEmptyStub.append)();
myObject.doSomethingThatCallsAppend();