如何使用量角器测试控制器作为语法?
Posted
技术标签:
【中文标题】如何使用量角器测试控制器作为语法?【英文标题】:How do I test controller as syntax with protractor? 【发布时间】:2017-08-11 15:08:13 【问题描述】:我目前正在为一个应用编写一些量角器测试。但是在应用程序中,我使用控制器作为语法,因为我想要处理的部分是组件。问题是当我使用 ""$ctrl.functionName"" 的选择器时,它给了我一个非法的选择器语句。
有人对此有任何想法吗?
let btn = $$("button[ng-click^=$ctrl.initRequest].secondary.bf-btn");
expect(btn.isDisplayed()).toBe(true);
错误信息是
Failed: invalid selector: An invalid or illegal selector was specified
【问题讨论】:
请分享代码。 你为什么不给你的按钮分配一个语义ID或类,而不是依赖低级的实现细节来选择它?测试不必关心控制器与控制器。它应该找到由“init-request”标识的按钮(例如),并测试它是否显示。 我认为从现在开始我们必须这样做,应用程序上的许多功能都没有得到严格的 ID。必须邮寄工作人员开始将 id 放在按钮和元素上。 @JBNizet 是对的。除了它不起作用之外,如果您将测试与内部组件结合起来,它们将不断中断。维护噩梦...... 【参考方案1】:如果您无法为元素分配有意义的id
或其他属性,则需要修复当前选择器。至少,ng-click
值周围应该有引号:
button[ng-click^='$ctrl.initRequest'].secondary.bf-btn
请注意,也不需要引号的稍微好一点的版本是使用部分匹配:
button[ng-click*=initRequest].secondary.bf-btn
然后,看看你是否可以放弃有问题的课程,然后:
button[ng-click*=initRequest]
【讨论】:
这很完美!非常感谢!团队的其他成员现在正在接受 ID 无处不在的指示!以上是关于如何使用量角器测试控制器作为语法?的主要内容,如果未能解决你的问题,请参考以下文章