Tôi đang cố gắng hiểu cách kiểm tra mã của mình bằng hoa nhài và angularJS. Tôi đã viết một dự án thử nghiệm với một bộ điều khiển và một dịch vụ tiêm. Bây giờ tôi muốn kiểm tra bộ điều khiển và cố gắng giả lập dịch vụ được tiêm. Nhưng tôi đã không tìm thấy một cách để kiểm tra chức năng "Đến" từ bộ điều khiển của tôi. Dưới đây là jsfiddle tôi: http://jsfiddle.net/2fwxS/Kiểm tra bộ điều khiển với dịch vụ được tiêm bên trong angularJS với hoa nhài
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:
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;
}
}
}]);
tôi tìm thấy một số giải thích tương tự trong đó $ cung cấp có thể là giải pháp đúng (How can I write jasmine test for angular controller and service like this?) hoặc createSpy (How do you mock Angular service that is a function?) nhưng tôi không thể hiểu khi nào tôi cần $ provider.factory hoặc $ provider.value hoặc khi nào tôi nên sử dụng createSpy?
tôi sẽ đánh giá cao nếu ai đó có thể giúp tôi hiểu được sự khác biệt và được mã vô hiệu hóa trong jsFiddle của tôi (http://jsfiddle.net/2fwxS/) ví dụ và chạy ...
Xin lỗi vì câu trả lời muộn của tôi! @Michael Cảm ơn bạn đã trả lời và jsFiddle đã sửa. Với những thay đổi nhỏ đó tôi đã có thể chạy thử nghiệm thành công! Thật vậy, thật tuyệt khi biết tại sao nhà máy không hoạt động. – burgerS
Và đồng nghiệp của tôi và tôi quan tâm nếu đó cũng là một cách để kiểm tra dịch vụ bên trong ví dụ này thay vì chế nhạo dịch vụ. Chúng tôi biết chúng tôi nên kiểm tra dịch vụ riêng biệt nhưng chúng tôi đã tự hỏi nếu thử nghiệm dịch vụ bên trong ví dụ này có thể là ... – burgerS
Bạn có thể loại bỏ dịch vụ để kiểm tra bộ điều khiển nếu dịch vụ rất đơn giản và bạn có thể một cách an toàn dự đoán hành vi của nó, do đó giảm thiểu tỷ lệ phá vỡ các kiểm tra bộ điều khiển vì một lỗi trong việc thực hiện dịch vụ. Nhưng, nếu bạn làm điều đó bạn sẽ được thử nghiệm bộ điều khiển, không phải là dịch vụ. Bạn vẫn nên kiểm tra dịch vụ một cách riêng biệt để bạn có thể đảm bảo nó hoạt động theo đúng cách. –