我是编写单元测试的新手。我正在尝试简单的事情,在我的saveInfo
函数中,控制器$scope.practice
应该包含一个值。
我正在使用webstorm来运行我的测试。我想检查$ {1}}函数是否已定义$ scope.practice。
test / practice.js
saveInfo
practice.js - controller
'use strict';
describe('myApp', function() {
describe('Controller: PracticeCtrl', function () {
var $http, $scope, $routeParams, $location, $locale, $timeout;
// load the controller's module
beforeEach(function () {
// Load the controller's module
module('myApp');
inject(function ($controller, $rootScope) {
$scope = {};
});
});
it('should define a practice property', function () {
expect($scope.practice).toBeDefined();
});
});
});
给我错误: -
angular.module('myApp').controller('PracticeCtrl', function ($http, $scope, $routeParams, $location, $locale, $timeout) {
$scope.saveInfo = function () {
$scope.practice = '52300099';
Practices.updateStampApproval().updateInfo($scope.practice);
};
$scope.updateInfo = function () {
....
}
$scope.getInfo = function () {
....
}
在我的控制器Expected undefined to be defined.
Error: Expected undefined to be defined.
中定义。那么为什么它会显示错误。
如何测试$scope.practice
智能意味着我如何编写测试,该测试仅检查控制器中的1个函数,例如'saveInfo'?
答案 0 :(得分:2)
您正在将$scope
初始化为空对象,并且未在任何地方进行操作。这就是你的测试失败的原因。
你应该做什么:
$scope
例如:
describe('myApp', function() {
describe('Controller: PracticeCtrl', function () {
var $http, $scope, $routeParams, $location, $locale, $timeout, practiceCtrl;
// load the controller's module
beforeEach(function () {
// Load the controller's module
module('myApp');
inject(function ($controller, $rootScope) {
$scope = $rootScope.$new();
practiceCtrl = $controller("PracticeCtrl", {
$scope: $scope
});
});
});
it('should define a practice property', function () {
$scope.saveInfo();
expect($scope.practice).toBeDefined();
});
});
});
我希望我能够帮助你。