2015-10-23 5 views
0

Попытки проверить простой тест в Jasmine & Карме и AngularJs Рамочного, контроллера:Жасмина Тестирования с ВМ в угловом контроллере

(function() { 
'use strict'; 
angular 
    .module('bsp.account') 
    .controller('Account', Account); 

/* @ngInject */ 
function Account(userService, accountService) { 

    var vm = this; 

    vm.title = 'Accounts'; 
    vm.username = userService.getUsername(); 

    vm.showPasswordModal = accountService.showPasswordModal; 
    vm.showLogoutModal = accountService.showLogoutModal; 

    activate(); 
    //////////////// 
    function activate() { 

    } 
} 
})(); 

Может кто-нибудь сказать мне, как я пишу простой тест, используя Jasmin с этим код? а также, возможно, возможно Methode и его испытание, Мой тестовый код ниже:

describe('Account', function() { 

var scope, 
    controller; 

beforeEach(module('bsp.account')); 
//sample testCase-- 
it('testCheck', function() { 
    expect('helloWorld').toBe("helloWorld"); 
}); 

describe('Account', function() { 
    //injecting the scope&controller-- 
    beforeEach(inject(function($rootScope, $controller) { 
     scope = $rootScope.$new(); 
     controller = $controller('Account', { 
      $scope: scope 
     }); 
     scope.vm = controller; 

    })); 

}); 
it("checkTitle",function(){ 
var vm = controller("Account",{$scope:scope}); 
expect(vm.title).toEqual("Accounts"); 
}); 
}); 

карма, ответ:

Running "karma:unit:run" (karma) task 
[2015-10-23 15:11:03.542] [DEBUG] config - Loading config /vagrant/frontend/build/karma-unit.js 
    ✗ checkTitle 
    TypeError: 'undefined' is not a function (evaluating 'controller("Account",{$scope:scope})') 
    at /vagrant/frontend/src/app/account/account.controller.spec.js:33 

LOG LOG: undefined 
PhantomJS 1.9.8 (Linux 0.0.0) LOG: undefined 
LOG LOG: '** if *********' 
PhantomJS 1.9.8 (Linux 0.0.0) LOG: '** if *********' 

PhantomJS 1.9.8 (Linux 0.0.0): Executed 37 of 37 (1 FAILED) (0.134 secs/0.128 secs) 

Warning: Task "karma:unit:run" failed. Use --force to continue. 

Отменено из-за предупреждений. Завершенный в 10.849s в Пт Окт 23 2015 15:11:04 GMT-0700 (PDT) - Ожидание ... Любые предложения оценили, я новичок в Jasmin testing.Thank Вы

ответ

0

Вы фактически инстанцировании BoardPerformance контроллер в вашем блоке beforeEach, но код, который вы показываете, предназначен для Account, поэтому я понимаю, что это ошибка.

Так что для вашего простого теста для запуска попробовать это:

describe('Account', function() { 

    var scope, controller, userServiceMock; 

    beforeEach(module('bsp')); 

    beforeEach(function() { 
    userServiceMock = { 
     getUsername: function(){} 
    } 
    }); 

    beforeEach(inject(function($rootScope, $controller) { 
    scope = $rootScope.$new(); 
    controller = $controller('Account', { 
     'userService': userServiceMock 
    }); 
    })); 

    it('checkTitle', function(){ 
    expect(controller.title).toEqual('Accounts'); 
    }); 

}); 
+0

Мои искренние извинения, я просто потерял между написанием большого количества тестовых примеров разного контроллера, я обновил его. Дает мне ошибку, TypeError: «undefined» не является n object (оценка «controller.title») – sg28

+0

Включает ли 'bsp' модуль' bsp.account' в качестве зависимости? – Puigcerber

+0

Да, у него есть it.updated, он, но даже после его включения дает мне ошибку ✗ checkTitle \t Ошибка: [$ injector: unpr] Неизвестный поставщик: userServiceProvider <- userService <- Учетная запись \t http: // errors .angularjs.org/1.3.20/$ инжектор/unpr? p0 = userServiceProvider% 20% 3C-% 20userService% 20% 3C-% 20Account \t at /vagrant/frontend/vendor/angular/angular.js:4031 \t на GetService (/vagrant/frontend/vendor/angular/angular.js:4178) \t на /vagrant/frontend/vendor/angular/angular.js:4036 \t TypeError: 'не определено' не является объектом (оценки ' controller.title ') \t на – sg28

0

Так что это новый тест в Jasmin,

describe('Account', function() { 
    var scope, controller, userServiceMock,accountServiceMock; 
    beforeEach(module('bsp')); 
    beforeEach(function() { 
    userServiceMock = { 
     getUsername: function(){} //this is a method inside userService 
    }; 
    accountServiceMock = { 
     showPasswordModal :function(){}//this is a method inside accountService 
    }; 
    }); 

    beforeEach(inject(function($rootScope, $controller) { 
scope = $rootScope.$new(); 
controller = $controller('Account', { 
    'userService': userServiceMock, 
    'accountService':accountServiceMock 
}); 
    })); 

describe('testing Title',function(){ 
    it('checkTitle', function(){ 
    expect(controller.title).toEqual('Accounts'); 
    }); 
}); 
}); 

Это очень простое, но имеет необходимую информацию для контроллеров с а также vm..thank к Pablo

Смежные вопросы