Tôi khá mới đối với Angular và đã xem xét tất cả các câu hỏi liên quan tương tự trên Stack Overflow nhưng không có gì giúp tôi. Tôi tin rằng tôi có mọi thứ được thiết lập chính xác nhưng vẫn gặp phải lỗi 'Nhà cung cấp không xác định' khi cố gắng đưa dịch vụ vào thử nghiệm đơn vị. Tôi đã đặt ra mã của tôi dưới đây - hy vọng ai đó có thể phát hiện ra một lỗi rõ ràng!Nhận lỗi nhà cung cấp không xác định khi tiêm Dịch vụ vào thử nghiệm đơn vị góc
tôi xác định mô đun của tôi trong một riêng biệt .js tập tin như thế này:
angular.module('dashboard.services', []);
angular.module('dashboard.controllers', []);
Đây là nơi tôi định nghĩa một dịch vụ gọi là EventingService (với logic loại bỏ cho ngắn gọn):
angular.module('dashboard.services').factory('EventingService', [function() {
//Service logic here
}]);
Đây là bộ điều khiển của tôi sử dụng EventingService (tất cả điều này hoạt động tốt khi chạy):
angular.module('dashboard.controllers')
.controller('Browse', ['$scope', 'EventingService', function ($scope, eventing) {
//Controller logic here
}]);
Dưới đây là bài kiểm tra đơn vị của tôi - dòng của nó, nơi tôi cố gắng để tiêm EventingService mà gây ra một lỗi khi tôi chạy thử nghiệm đơn vị:
describe('Browse Controller Tests.', function() {
beforeEach(function() {
module('dashboard.services');
module('dashboard.controllers');
});
var controller, scope, eventingService;
beforeEach(inject(function ($controller, $rootScope, EventingService) {
scope = $rootScope.$new();
eventingService = EventingService
controller = $controller('Browse', {
$scope: scope,
eventing: eventingService
});
}));
it('Expect True to be True', function() {
expect(true).toBe(true);
});
});
Khi tôi chạy thử nghiệm tôi nhận được lỗi này:
Error: Unknown provider: EventingServiceProvider <- EventingService
tôi đã đảm bảo rằng tập tin specrunner.html hoa nhài của tôi có tất cả các file nguồn cần thiết (điều này là một dự án Asp.Net MVC):
<!-- Include source files here... -->
@Scripts.Render("~/bundles/jquery")
<script type="text/javascript" src="@Url.Content("~/Scripts/angular.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/angular-mocks.js")"></script>
<script type="text/javascript" src="@Url.Content("~/App/scripts/app.js")"></script> <!-- Angular modules defined in here -->
<script type="text/javascript" src="@Url.Content("~/App/scripts/services/eventing.js")"></script> <!-- My Eventing service defined here -->
<script type="text/javascript" src="@Url.Content("~/App/scripts/controllers/browse.js")"></script> <!-- My Browse controller defined here -->
<!-- Include spec files here... -->
<script type="text/javascript" src="@Url.Content("~/App/tests/browse.js")"></script> <!-- The actual unit test here -->
tôi chỉ c không phải là lý do tại sao Angular là ném lỗi này phàn nàn về EventingService của tôi. Bộ điều khiển của tôi hoạt động tốt trong thời gian chạy - đó là khi tôi thử kiểm tra xem tôi có gặp lỗi không, vì vậy tôi tò mò muốn biết liệu tôi có làm hỏng thứ gì đó với việc nhại/tiêm hay không.
Trợ giúp về góc khi thử nghiệm là rác nên hiện tại tôi đang bối rối - bất kỳ trợ giúp hoặc đề xuất nào mà bất kỳ ai có thể đưa ra đều sẽ rất được đánh giá cao. Cảm ơn.
Mới tại thử nghiệm đơn vị Góc tại thời điểm này, và hoàn toàn đồng ý về 'Trợ giúp về góc thử nghiệm là rác nên tôi đang bối rối tại' – Michel