Итак, я уже несколько дней спотыкаюсь в этой странной ошибке. Надеюсь, вы, ребята, могли бы пролить свет в этом туннеле. Мне очень жаль беспокоить вас, но журнал ошибок не помогает. Более того, аналогичный файл (я могу предоставить его при необходимости) имеет те же тесты, написанные таким же образом, и они работают без нареканий.
Я прошел юнит-тестирование в карма-жасмине моего проекта. Все идет гладко, за исключением этого файла:
'use strict';
angular.module('myApp.parkinput', ['ngRoute', 'Parklot', 'City','ngFileUpload'])
.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/parkinput', {
templateUrl: 'parkinput/parkinput.html',
controller: 'parkinputCtrl'
});
}])
.controller('parkinputCtrl', ['$scope', 'NgMap', 'Parklot', 'City', '$location','Upload','$window', function($scope, NgMap, Parklot, City, $location,Upload,$window) {
$scope.googleMapsUrl="https://maps.googleapis.com/maps/api/js?key=MYKEY";
var map;
$scope.newParkZone = {};
$scope.newPicture = {};
$scope.marker = {id:'newParkZone', name: 'newParkZone', position:null};
$scope.cities = City.getCities().then(
function(response){
$scope.cities = response.data;
},
function(error){
console.log(error);
});
NgMap.getMap().then(
function(evtMap) {
map = evtMap;
},
function(error){
//console.log(error);
});
$scope.setCenter = function(event, city) {
if(city)
{
//preparing the latlen obj to change the map center
var coords = $scope.newParkZone.City.GPS_Coordinates_Center.split(",");
map.setCenter({
lat : coords[0]*1,
lng : coords[1]*1
});
return;
}
map.setCenter(event.latLng);
$scope.marker.position = event.latLng;
$scope.newParkZone.coords = event.latLng.lat() + "," + event.latLng.lng();
};
$scope.submit = function () {
$scope.newParkZone.picture = "";
var newParklot = Parklot.create($scope.newParkZone);
if ($scope.upload_form.file.$valid && $scope.file) {
$scope.upload($scope.file, newParklot); //call upload function
}
}
$scope.upload = function (file, parklot) {
Upload.upload({
url: 'http://localhost:3000/image',
data:{file:file, parklot:parklot}
}).then(
function (resp) {
if(resp.data.error_code === 0){
$window.alert('Success ' + resp.config.data.file.name + 'uploaded. Response: ');
} else {
$window.alert('an error occured');
}
},
function (resp) {
$window.alert('Error status: ' + resp.status);
});
};
}]);
, которое должно быть проверено следующим образом:
describe('Park Input Module', function() {
beforeEach(module('myApp.parkinput'));
describe('Route Configuration', function() {
var $scope = null;
var ctrl = null;
it('should be correct', function() {
inject(function($route, $location, $rootScope, $httpBackend) {
expect($route.current).toBeUndefined();
$httpBackend.expectGET('parkinput/parkinput.html').respond(200);
$location.path('/parkinput');
$rootScope.$digest();
expect($route.current.templateUrl).toBe('parkinput/parkinput.html');
expect($route.current.controller).toBe('parkinputCtrl');
});
});
});
describe('controller', function(){
var $controller;
beforeEach(inject(function(_$controller_, $rootScope){
$controller = _$controller_;
}));
it('should be defined', function(){
var $scope = {};
var controller = $controller('parkinputCtrl', { $scope: $scope});
expect(controller).toBeDefined()
});
})
});
Вот ошибки:
`
Firefox 59.0.0 (Windows 10 0.0.0) Park Input Module Route Configuration should be correct FAILED
minErr/<@node_modules/angular/angular.js:116:12
loadModules/<@node_modules/angular/angular.js:5023:15
forEach@node_modules/angular/angular.js:408:11
loadModules@node_modules/angular/angular.js:4983:5
createInjector@node_modules/angular/angular.js:4900:19
WorkFn@node_modules/angular-mocks/angular-mocks.js:3173:44
angular.mock.inject@node_modules/angular-mocks/angular-mocks.js:3153:35
@app/parkinput/parkinput.spec.js:11:13
<Jasmine>
Firefox 59.0.0 (Windows 10 0.0.0) Park Input Module controller should be defined FAILED
minErr/<@node_modules/angular/angular.js:116:12
loadModules/<@node_modules/angular/angular.js:5023:15
forEach@node_modules/angular/angular.js:408:11
loadModules@node_modules/angular/angular.js:4983:5
createInjector@node_modules/angular/angular.js:4900:19
WorkFn@node_modules/angular-mocks/angular-mocks.js:3173:44
<Jasmine>
TypeError: $controller is not a function in app/parkinput/parkinput.spec.js (line 35)
@app/parkinput/parkinput.spec.js:35:30
<Jasmine>
`
Опять, простите меня за WoT, но я не в курсе. Я могу предоставить файл конфигурации кармы, если это необходимо. Заранее благодарю за помощь.