teo*_*one 24 routes params jasmine angularjs karma-runner
我需要测试一个$routeParams用于定义动作的Controller .也许这是一个测试问题,或者我编写控制器的方式是错误的,所以现在我无法编写测试.
这是我的控制器
angular.module('cmmApp')
.controller('UserCtrl', function ($scope, $location, $routeParams, $ionicLoading, $ionicPopup, Userservice) {
//if a user id is set retrieve user information
if(typeof $routeParams.id !== 'undefined'){
var loader = $ionicLoading.show({content: "Retrieving user data"});
var user = Userservice.get({id: $routeParams.id}).$promise;
user.then(function(res){
console.log(res);
$scope.user = res.user;
loader.hide();
});
}
//else create an empty resource
else {
$scope.user = new Userservice;
}
});
Run Code Online (Sandbox Code Playgroud)
基本上我只想在提供id的情况下加载资源$routeParams,否则创建一个空资源.
以下是测试:
'use strict';
describe('Controller: UserCtrl', function () {
// load the controller's module
beforeEach(module('cmmApp'));
var UserCtrl,
scope,
routeParams;
// Initialize the controller and a mock scope
beforeEach(inject(function ($controller, $rootScope, $routeParams, Userservice) {
scope = $rootScope.$new();
routeParams = $routeParams;
UserCtrl = $controller('UserCtrl', {
$scope: scope
});
console.log("routeParams");
routeParams = {id: 8490394};
console.warn(routeParams);
}));
it('should create an epmty user', function () {
console.log(scope.user);
expect(scope.user).toEqual({});
});
});
Run Code Online (Sandbox Code Playgroud)
当我运行grunt test业力回复:
Controller: UserCtrl should create an epmty user FAILED
Expected { } to equal { }.
Error: Expected { } to equal { }.
at null.<anonymous> (/Users/carlopasqualicchio/Sites/CMM_Ionic/test/spec/controllers/user.js:28:24)
Run Code Online (Sandbox Code Playgroud)
我想知道如何$routeParams.id在测试运行之前告诉业力改变,并在两个不同的测试中分配不同的值(我需要在第一个中将其设置为null,并将值设置为另一个).
任何帮助表示赞赏.
谢谢,马特.
gka*_*pak 39
您可以$routeParams使用$controller(locals对象)的第二个参数传递自定义对象,即通过以下方式传递$scope:
UserCtrl = $controller('UserCtrl', {
$scope: scope,
$routeParams: {id: '...'}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10745 次 |
| 最近记录: |