ile angularJS içinde enjekte servis ile test denetleyicisi Kodumu jasmine ve angularJS ile nasıl test edeceğimi anlamaya çalışıyorum. Bir kontrolör ve enjekte edilmiş bir servis ile bir test projesi yazdım. Şimdi kontrolörü test etmek ve enjekte edilen servis ile dalga geçmek istedim. Ancak, kontrol cihazımdan “Gelen” fonksiyonunu test etmenin bir yolunu bulamadım. http://jsfiddle.net/2fwxS/Jasmine
controller.js:
angular.module('myApp.controllers', [])
.controller('MyCtrl', ['$scope', 'MyService', function ($scope, MyService) {
$scope.User = {};
$scope.HasUserArrived = false;
$scope.Arrived = function(firstname, lastname) {
$scope.HasUserArrived = MyService.Arrive(firstname, lastname);
return $scope.HasUserArrived;
}
}]);
services.js: İşte benim jsfiddle var
var myApp = angular.module('myApp.services', []).
value('version', '0.1');
myApp.factory('MyService', [function() {
return {
HasArrived: false,
Arrive: function (firstname, lastname) {
this.HasArrived = false;
if (firstname && lastname) {
this.HasArrived = true;
}
console.log("User has arrived: " + this.HasArrived);
return this.HasArrived;
}
}
}]);
Ben $ olabilir sağlamak bazı benzer açıklamalarda bulundu doğru çözüm (How can I write jasmine test for angular controller and service like this?) veya createSpy (How do you mock Angular service that is a function?) ancak $ provider.factory veya $ provider.value gereksinim duyduğumda ya da createSpy'yi ne zaman kullanmalıyım?
biri bana farklılıkları anlamaya yardımcı ve hemen çalıştırmaktır benim jsFiddle ( http://jsfiddle.net/2fwxS/) örneğe devre dışı kod alır eğer ben takdir ediyorum...
Geç yanıt için özür dilerim! @Michael Cevap ve düzeltilmiş jsFiddle için teşekkür ederiz. Bu küçük değişikliklerle testlerimi başarılı bir şekilde yürüttüm! Gerçekten de fabrikanın neden çalışmadığını bilmek güzel olurdu. – burgerS
Ve meslektaşım ve ben de hizmetin alay etmek yerine bu örnek içinde hizmeti sınamanın bir yolu varsa ilgileniyoruz. Servisimizi ayrı ayrı test etmemiz gerektiğini biliyoruz ancak buradaki servisin test edilip edilmeyeceğini merak ediyorduk ... – burgerS
Servis çok basitse kontrol cihazını test etmek için servisle alay edebilirsiniz. Davranışını güvenli bir şekilde tahmin eder, böylece servis uygulamasındaki bir hatadan dolayı kontrolör testlerinin kırılma olasılığını en aza indirir. Ancak, bunu yaparsanız, denetleyiciyi değil, hizmeti test edeceksiniz. Hizmeti ayrı olarak test etmelisiniz, böylece çalışacak şekilde çalışmasını sağlayabilirsiniz. –