Aşağıdaki yöntemi test bir sorun birimi yaşıyorum kullanarak zincirleme yöntemi test etmek okunamıyor tanımsız malı 'arama'):nasıl ünitesi Jasmine'i
var $locationMock = { path: function() { }, search: function() { } };
it('changeLocation should update location correctly', function() {
$controllerConstructor('CourseOutlineCtrl', { $scope: $scope, $location: $locationMock });
var url = "/url/";
spyOn($locationMock, "path");
spyOn($locationMock, "search");
$scope.changeLocation(url);
expect($locationMock.search).toHaveBeenCalledWith({ ref: "outline" });
expect($locationMock.path).toHaveBeenCalledWith(url);
});
Ben aşağıda benim işlevini değiştirmek ise, test geçer:
$scope.changeLocation = function (url) {
$location.path(url);
$location.search({ ref: "outline" });
};
Yöntem zincirleme kullanırken bu yöntemi nasıl test edebilirim? $ LocationMock'umu farklı şekilde ayarlamanız mı gerekiyor? Hayatım boyunca bunu anlayamıyorum.
Jasmine 1.x kullanıyordum, böylece .and.returnValue() başarısız oldu. Bu olsa da Jasmine 2.0 için harika çalışıyor. 1.x ile çalışmasını sağlamak için .and.returnValue() yöntemini .andReturns() olarak değiştirdim. Yakında Yasemin'i yükselteceğim. Yardım için teşekkürler! – nweg
@nweg Bir şey değil. Düzenleme için teşekkürler. :) – PSL
İşaretçi için @PSL'ye teşekkürler. Zincirleme yapılacak yöntemlerde aynı nesneyi döndürmek (oluşturucu modeli) burada anahtardır. Düzgün resimli. – Rajaraman