【发布时间】:2014-03-06 13:11:17
【问题描述】:
我是 jasmine 测试的新手,我无法全面了解如何对我的控制器进行单元测试。我的控制器做了一些任务,我基本上想要测试做以下事情:
- 它调用的模拟服务。
- 范围内的模拟数据。
- 测试控制器中特定方法的行为。
- 验证:服务已被调用一次。
- 验证:服务传递了正确的数据。
我需要尽可能完整的示例如何编写测试,以及使用哪些声明来模拟方法。
有问题的控制器方法如下所示:
.controller('ProjectConfigurationCtrl', function($scope, $routeParams, InfraService, ProjectConfigurationService) {
// some pre-init...
$scope.clickUpdate = function() {
if ($scope.projectData.Id === 0) {
ProjectConfigurationService.save(angular.toJson($scope.projectData), function(project) {
$scope.projectData = project;
$scope.newproject = false;
$scope.info = "Project " + project.ProjectName + " created successfully.";
}, function() {
$scope.info = "Project " + $scope.projectData.ProjectName + " can not be created: server error.";
});
} else {
ProjectConfigurationService.update(angular.toJson($scope.projectData), function() {
$scope.info = "Project " + $scope.projectData.ProjectName + " updated successfully.";
}, function() {
$scope.info = "Project " + $scope.projectData.ProjectName + " can not be updated: server error.";
});
}
我想看看 ProjectConfigurationService.save/update 是否被调用过一次,并检查这些调用的参数是什么。我想要模拟服务返回信息。通话结束后,我想检查 $scope.newproject、$scope.info 等,看看里面有什么。
【问题讨论】:
标签: angularjs unit-testing jasmine