gpt4 book ai didi

AngularJS:带重定向的单元测试页面

转载 作者:行者123 更新时间:2023-12-03 08:01:15 25 4
gpt4 key购买 nike

你能为下面的 Ctrl 推荐一些好的单元测试吗?

  1. 我想确保重定向工作正常
  2. 无论如何我可以在这里使用 Jasmine Spies/任何好处吗?
  3. 是否可以测试 Controller 在强制重定向(重定向到带有重定向缩进的页面)上的行为?
angular.module('app')
.controller('MainCtrl', ['$scope', 'API', '$location', function ($scope, API, $location) {

// redirect back to login page
if( ! API.token ) $location.path('/');


}]);

最佳答案

单元测试应该只关注它正在测试的组件。您不需要测试 $location 实际做了什么,而是在需要时调用该方法。此外,您不关心 API 服务做了什么,只是当 token 为假时 Controller 调用位置方法。

我会:

模拟服务 API

监视 $location.path 方法。

API.token设置为true

检查 $location.path 是否未被调用。

API.token设置为false

检查是否已使用参数“/”调用了 $location.path

像这样:

describe('Controller: MainCtrl', function() {

// Define this test's local variables
var scope,
$location,
MainCtrl;

// Load the controller's module
beforeEach(angular.mock.module('app'));

/* jshint camelcase:false */
// Initialize the controller and scope
beforeEach(angular.mock.inject(function($controller, $rootScope, _$location_) {
scope = $rootScope.$new();
$location = _$location_;
spyOn($location, 'path');
MainCtrl = $controller('MainCtrl', {
$scope: scope,
API: {token: false},
$location: $location
});

}));

it('should exist', function() {
expect(MainCtrl).toBeTruthy();
});

describe('when created', function() {

it('should call $location accordingly', function () {
expect($location.path).toHaveBeenCalledWith('/');
});

});

});

关于AngularJS:带重定向的单元测试页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26958004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com