В момента работя с Angular и използвам Karma и Jasmine, за да направя тестването. Филтрите, например, се инжектират към главния модул и могат да се тестват без проблем, но когато се опитам да тествам контролерите, получавам празен обект след инжектирането.
Ето кода на моя основен модул:
(function () {
'use strict';
var dependencies = [];
angular.module('myApp', dependencies)
}());
Контролерът, който трябва да тествам:
(function () {
'use strict';
angular.module('myApp')
.controller('NavCtrl', ['$scope',
function ($scope) {
$scope.currentUser = null;
}]);
}());
И накрая тестовият пакет:
describe ("controller", function() {
beforeEach(module("myApp"));
var $scope, $rootScope, controllerLoader;
beforeEach(inject(function($injector) {
$rootScope = $injector.get('$rootScope');
$scope = $rootScope.$new();
var $controller = $injector.get('$controller');
controllerLoader = function() {
return $controller('NavCtrl', {
'$scope': $scope
});
};
}));
it ("testing injection", function() {
var controller = controllerLoader();
expect(controller).toNotEqual({});
})
});
Но резултатът от теста е НЕУСПЕШЕН и след отстраняване на грешки виждам, че инжектираният контролер е празен. Вече се опитах да дам фалшиво име за контролера и тестът просто се срива, което означава, че контролерът е открит, но по някаква причина не получавам свойствата му.
var $controller = $injector.get('$controller');
във функциятаcontrollerLoader
. - person Davin Tryon   schedule 25.03.2014$scope
- person doodeec   schedule 25.03.2014$scope
. Много благодаря! - person Eduardo Páez Rubio   schedule 25.03.2014