angular.element
ile eşleşmek istiyorum. Ve ben angular.element
'un belirli bir süre olarak çağrıldığından ve anguler.element.attr
'un da çağrıldığından emin olmak istiyorum. Ben benim testteYasemin, Karma ve Köşeli Zincirleme yöntemlerini kullanmaktadır
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);
};
};
:
Aşağıdaki kod var
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);
Ama şu hatayı veriyor:
TypeError: undefined is not an object (evaluating 'angular.element("#thing-" + things[i].id).attr')
Ben de benim testi istiyorum gibi bir şey var:
expect(angular.element.attr.calls.count()).toBe(1);
expect(angular.element.attr).tohaveBeenCalledWith("foo", things[0].bar);
"callThrough" işlevini kullanarak, sınava dahil edilen jQuery kitaplığına ihtiyacım var mı? 'CallThrough' kullanıldığında, birim testi jQuery'yi kullanır ve jQuery bozulursa birim test araları mı demektir? – benjovanic
@benjovanic jQuery'yi sorunuzdaki teknik özelliklerden uzak tutmanız gerektiğini belirtmediniz. Ama evet, onu eklemelisin. Ve hayır, kırılmamalı, yukarıdaki kod, "#thing -..." seçicisi için bir eleman olmasa bile alamaz (jQuery kodu test edildiğinde potansiyel olarak eksik elemanlar için DOM armatürleri gerekir) burada bir sorun değil). – estus