Я пытаюсь выполнить некоторые модульные тесты в своем приложении Ionic, используя карма-картон-жасмин, и это дает мне довольно большую головную боль.
У меня есть функция в мой контроллер, я хочу, чтобы проверить, придав ему фиктивный вход (в мандатную), но я получаю ошибки
Не функция (издевательская ошибка?)
TypeError: 'undefined' is not a function (evaluating '$controller')
TypeError: 'undefined' is not an object (evaluating '$scope.credentials.username = "uname"')
Я пытался несколько альтернативных способов сделать это, но один из они продолжали давать мне подделку, что мне нужно было добавить зависимости от моего
services.js
(т. е.
$ionicPopup
), что может иметь к нему какую-то правду, но я совершенно новый для всего этого. Любая помощь будет принята с благодарностью.
Я сделал большой прогресс по большей части переписывания, но сейчас я получаю сообщение об ошибке
TypeError: 'undefined' is not a function (evaluating 'LoginService.initiateRequest(
$scope.credentials.username,
$scope.credentials.password)')
at c:/Users/name/git/mobile/www/js/controllers.js:18
Это говорит, что это не функция в моем файле controllers.js ... который это ОПРЕДЕЛЕННО. На самом деле не понимаю этого. Это как-то связано с услугами?
я здесь мой controllers.tests.js
файл ...
describe('Controllers', function() {
beforeEach(module('myApp.services', 'myApp.controllers'));
var mockRequest = {
}
beforeEach(function() {
module(function($provide) {
$provide.value('initiateRequest', mockRequest);
});
});
var $rootScope, $controller, $sharedProperties, $resource;
beforeEach(inject(function(_$controller_, $rootScope) {
myScope = $rootScope.$new();
$scope = {};
$state = {};
LoginService = {};
localStorageService = {};
sharedProperties = {};
$ionicLoading = myScope;
initiateRequest = mockRequest;
$controller = _$controller_;
}));
describe('$scope.login()', function() {
it('does something', function() {
var $scope = {};
var controller = $controller('LoginController', {
$scope: $scope,
$state: $state,
LoginService: LoginService,
localStorageService: localStorageService,
sharedProperties: sharedProperties,
$ionicLoading: $ionicLoading
});
expect($scope.login).toBeDefined(true);
expect($scope.show).toBeDefined(true);
$scope.login();
});
});
});
почему ваш контроллер, начиная с '.'? если это не что-то вроде app.controller() –
круглые скобки и скобки не сбалансированы в 'controllers.tests.js' – Barmar
@Barmar D'oh! Не могу поверить, что я пропустил это. – Bya413