如何用内联控制器测试指令范围上的值
How to test values on scope of directive with inline controller
我有以下指令,我想进行单元测试:
'use strict';
angular.module('gameApp')
.directive('gmGravatar', gmGravatar);
gmGravatar.$inject = ['$routeParams', 'playersService'];
function gmGravatar() {
var directive = {
restrict: 'E',
template: '<img gravatar-src="gravatar.email" alt="" id="gravatar" class="img-rounded" style="margin: auto; display: block;">',
controller: function($routeParams, playersService) {
var vm = this;
var playerId = $routeParams.playerId;
playersService.getPlayerInfo({
playerId: playerId
}).$promise.then(function(player) {
vm.email = player.email;
});
},
controllerAs: 'gravatar'
};
return directive;
}
我已经成功地设置了我的测试规范,并让我的第一个断言通过了。然而,我正在努力如何测试vm.email
:
'use strict';
describe('gmGravatar directive', function() {
var element;
var scope;
var $httpBackend;
beforeEach(module('gameApp'));
beforeEach(module('templates'));
beforeEach(inject(function($rootScope, $compile, _$httpBackend_) {
scope = $rootScope.$new();
element = '<gm-gravatar></gm-gravatar>';
element = $compile(element)(scope);
$httpBackend = _$httpBackend_;
$httpBackend.whenGET('/api/players/playerInfo').respond(200, '');
scope.$digest();
}));
it('should replace the element with the appropriate content', function() {
expect(element.html()).toContain('<img gravatar-src="gravatar.email"');
expect(scope.email).toEqual('joe@example.com');
});
});
可能是expect(scope.gravatar.email).toEqual('joe@example.com');
也可以试试expect(element.scope().gravatar.email).toEqual('joe@example.com');
相关文章:
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- AngularJS:带有HTML和angular表达式的指令;编译”;具有外部范围的内容
- AngularJS指令范围约束问题重复出现
- 在 Angular 指令中,如何进行回调,其中函数名称位于父范围的变量中
- 对于使用传递的数据计算的局部范围变量,角度绑定在自定义指令中不起作用
- AngularJS:从控制器访问特定的指令范围
- AngularJS:从指令设置范围变量
- AngularJS在指令模板中修改范围
- 基于范围数据更改指令模板中的元素
- 如果指令包含在另一个指令中,我如何在隔离范围内添加双向数据绑定属性
- 日期-时间范围指令字段未显示任何值
- 从父控制器传递工厂数据以隔离范围指令
- 从子元素访问范围指令
- AngularJS在父级和子级范围指令之间共享数据
- 隔离范围指令会导致业力错误
- 范围$指令中的watch't在AJAX请求后被调用
- 如何在AngularJS中对隔离范围指令进行单元测试
- AngularJS隔离范围指令
- 从隔离范围指令中的更改更改控制器变量值
- 美元的范围.指令中的项未定义