Lưu ý: Tôi đang viết tất cả mọi thứ trong CoffeeScript
Tôi có một bộ điều khiển như sau:
angular.module('myApp').controller 'MyController', ($scope, $routeParams, Batch) ->
$scope.$on '$routeChangeSuccess',() ->
Batch.get {batchUuid: $routeParams.batchUuid}, (response) ->
$scope.batch_id = response.id
Bộ điều khiển kéo trong nguồn hàng loạt mà là quy định như sau:
angular.module('myApp').factory 'Batch', ($resource) ->
$resource '/batches/:batchUuid', {}
tôi có một lộ trình cho việc này như sau:
$routeProvider.when('/batches/:batchUuid',
{ templateUrl: 'batches-processing.html', controller: 'MyController' })
Vì vậy:
- Quý khách tham quan các tuyến đường /lô/22
- Nó sử dụng MyController
- Nó gây nên $ routeChangeSuccess
- Nó kêu gọi được trên phù thủy tài nguyên hàng loạt batchUuid từ tuyến đường
- Nó được trả về một phản ứng json và assi GNS một id đến $ scope.batch_id
Bây giờ tôi muốn kiểm tra điều này vì vậy tôi có một bài kiểm tra đơn vị như sau:
describe 'Controllers', ->
beforeEach module 'myApp'
describe 'MyController', ->
scope = {}
ctrl= {}
beforeEach inject ($rootScope, $controller, Batch, $httpBackend) ->
scope = $rootScope.$new()
ctrl = $controller('MyController', ($scope: scope))
#I imagine I need to use either my injected Batch resource or the httpBackend to fake/expect the ajax call here
it "Gets data from the resource and assigns it to scope",() ->
#How on earth do I test this
Tôi đã thấy những người sử dụng $ httpBackend.expect ('/ endpoint. json '). trả lời ({id: 1}) vv nhưng tôi không thể làm điều đó. URL tài nguyên của tôi dựa trên batchUuid từ tuyến đường. Làm thế nào tôi có thể mô phỏng/giả/thực hiện một thử nghiệm mà sẽ mô phỏng một sự thay đổi tuyến đường, kích hoạt $ routeChangeSuccess, vượt qua một routeParameter đến tài nguyên, làm một nhận được trên tài nguyên và kiểm tra kết quả?
Tôi đang kéo tóc ra khỏi tài liệu này và góc cạnh dường như không bao gồm nó.
Cảm ơn!
huyền thoại người bạn đời. Chỉ là huyền thoại. –
trừ một cho coffeescript? boo. Bản thân câu hỏi nằm trong coffeescript –