Tôi đang cố gắng viết các kiểm tra mã mà tôi không viết sử dụng ui-router.AngularJS- unit kiểm tra trình điều khiển ẩn danh
tôi không thể tìm ra một cách để tiêm một bộ điều khiển vào thử nghiệm của tôi kể từ khi nó được viết inline và ẩn danh trong tình trạng cấu hình trong bộ điều khiển khác:
$scope.deleteSomething = function() {
$modal.open(
templateUrl: '/delete-item-modal.html',
controller: ['$scope', '$modalInstance', 'someService',
function($scope, $modalInstance, someService) {
....
}
],
resolve: {
...
}
});
};
Nếu bộ điều khiển được đặt tên là cái gì đó như controller: 'TheController'
tôi sẽ không có vấn đề tiêm nó bằng cách làm như thế này trong thử nghiệm của tôi:
beforeEach(inject(function($controller) {
$controller('TheController', {/*dependancies to be injected*/});
}));
Nhưng kể từ bộ điều khiển là vô danh, tôi không có một xử lý cho nó và không thể tìm ra cách để truy cập vào nó.
Vì vậy, bạn có câu trả lời: cấu trúc lại bộ điều khiển vào một bộ điều khiển được đặt tên, để làm cho nó kiểm chứng. –
@Jb Nizet có, nhưng tôi đang cố gắng tránh điều đó vì nó không phải là mã của tôi và không muốn tái cấu trúc nó. Đó sẽ là phương sách cuối cùng. – Noam
Tôi biết rằng điều này không giải quyết được vấn đề của bạn, nhưng nếu nó không phải là mã của bạn, và bạn không được phép sửa đổi nó, thì bạn không nên đơn vị kiểm tra nó. Các nhà phát triển đã viết mã nên là một trong những thử nghiệm nó. –