Jasmine simula métodos encadenados con Karma y Angular
Quiero burlarmeangular.element
. Y quiero asegurarangular.element
ha sido llamado una cierta cantidad de veces y queanguler.element.attr
ha sido llamado también.
Tengo el siguiente código:
var things = $scope.getThings();
for (var i = 0; i < things.length; i++) {
if (things[i].type == "xyz") {
angular.element("#thing-" + things[i].id)
.attr("foo", things[i].bar);
};
};
En mi prueba tengo:
var things = [
{
id: 1,
type: "xyz",
bar: 10
},
{
id: 2,
type: "abc",
bar: 33
}
];
spyOn($rootScope, "getThings").and.returnValue(things);
spyOn(angular, "element").and.returnValue();
$rootScope.doThings(); // call controller method
expect(angular.element.calls.count()).toBe(1);
Pero da el siguiente error:
TypeError: undefined no es un objeto (evaluando 'angular.element ("# thing-" + things [i] .id) .attr')
También quiero que mi examen tenga algo como:
expect(angular.element.attr.calls.count()).toBe(1);
expect(angular.element.attr).tohaveBeenCalledWith("foo", things[0].bar);