0
我已经写了一个角度测试应用程序。试着用它学习测试。测试Angularjs控制器服务作为依赖时的困难
控制器看起来像这样
var EmployeeModule = EmployeeModule || {};
(function (currentModule) {
EmployeeModule.EmployeeController = function ($scope, $routeParams, $location, Employees) {
this.RegEmployees = Employees.GetEmployees();
this.currentEmployee = {};
if ($routeParams.Id != undefined) {
console.log("to check $route"+$routeParams);
this.currentEmployee = Employees.GetEmployeeById($routeParams.Id);
}
this.Id = "";
this.firstname = "";
this.lastname = "";
this.email = "";
this.dob = "";
this.department = "";
this.RegisterEmployee = function() {
Employees.RegisterEmployee(this.firstname, this.lastname, this.email, this.dob, this.department);
if ($scope.employeeForm.$valid)
$location.path("/Employees");
}
EmployeeModule.Employee = function (firstname, lastname, email, dob, department) {
this.Id = Date.now();
this.FirstName = firstname;
this.LastName = lastname;
this.Email = email;
this.DOB = dob;
this.Department = department;
}
})(EmployeeModule);
和我的角度服务看起来这
var app = angular.module('angularApp2App');
app.factory('Employees', function() {
var RegEmployees = {};
var Employees = [];
//Service
RegEmployees.RegisterEmployee = function (firstname, lastname, email, dob, department) {
var newEmployee = new EmployeeModule.Employee(firstname, lastname, email, dob, department);
Employees.push(newEmployee);
}
return RegEmployees;
});
app.controller('EmployeeController', ['$scope', '$routeParams', '$location', 'Employees', EmployeeModule.EmployeeController]);
我想要编写单元测试控制器,但不知道,我怎么能注入服务为单元测试中对控制器的依赖性。
请在此 帮助和我的单元测试代码是
describe('Controller: EmployeeController', function() {
// load the controller's module
beforeEach(module('angularApp2App'));
var empCtrl,
scope;
// Initialize the controller and a mock scope
beforeEach(inject(function ($controller, $rootScope, $injector) {
scope = $rootScope.$new();
var employeeService = $injector.get('Employees');
console.log(employeeService);
spyOn(employeeService , 'RegisterEmployee');
empCtrl = $controller('EmployeeController', {
$scope: scope
// place here mocked dependencies
});
}));
it('checking default values', function() {
expect(empCtrl.currentEmployee).toEqual({});
});
it('checking RegisterEmployee Method',function() {
expect(RegisterEmployee).toHaveBeenCalled();
});
});
感谢
请指出你的问题中单元测试的当前代码。 – estus
更新测试逻辑,但不知道如果这是正确的做法 – Geeky