Мы работаем над темной темой для нашего приложения, мы устанавливаем это путем изменения класса CSS для элемента body. Он включается и выключается через службу AngularJS с вызовом, подобным ...
function setTheme(theme){
angular.element("body").addClass(theme);
}
Я пытаюсь написать модульные тесты с использованием Jasmine в службе, чтобы обеспечить вызов angular.element("body")
с добавлением темы CSS класс, такой как ....
this.mockAngularElement = {
addClass: jasmine.createSpy("addClass"),
removeClass: jasmine.createSpy("removeClass")
};
jasmine.createSpy(angular, "element").and.returnValue(this.mockAngularElement);
И где соответствующие модульные тесты имеют эти две ожидаемые строки ...
expect(angular.element).toHaveBeenCalledWith("body");
expect(this.mockAngularElement.addClass).toHaveBeenCalledWith("mock-theme");
Однако жасмин кажется пожаловаться на что-то вроде ...
Error: <toHaveBeenCalledWith> : Expected a spy, but got Function.
Usage: expect(<spyObj>).toHaveBeenCalledWith(...arguments) in node_modules/jasmine-core/lib/jasmine-core/jasmine.js (line 3690)
<REDACTED>.spec.js:153:53
Есть идеи по этому поводу? Что может быть лучше для фактического тестирования элемента body, когда этот класс CSS применяется из этого сервиса?