【发布时间】:2015-07-02 03:18:48
【问题描述】:
我有一个自定义指令,它根据另一个服务的值显示/隐藏一个元素。我尝试创建一个测试,看看指令是否做了应该做的事情。一开始我再次测试了 ":visible" 选择器,但即使我知道元素实际上正在显示,它也总是返回 false。
it('Should show element if logged', function () {
element = angular.element('<p hc-auth>Some Text</p>');
AuthService.Logged = true;
scope = $rootScope.$new();
scope.$apply(function () {
$compile(element)(scope);
});
expect(element.is(":visible")).toBeTruthy();
});
经过一些调试,我意识到在测试执行期间,即使将显示设置为阻塞,元素的宽度和高度也为 0,因此 ":visible" 选择器总是返回 false。我将其更改为检查显示选择器,现在它可以正确测试元素,但这似乎过于依赖于如何显示元素的实现。
it('Should show element if logged', function () {
element = angular.element('<p hc-auth>Some Text</p>');
AuthService.Logged = true;
scope = $rootScope.$new();
scope.$apply(function () {
$compile(element)(scope);
});
expect(element.css('display')).toBe('block');
});
解决这种情况的最佳方法是什么?
【问题讨论】:
标签: javascript jquery html css angularjs