最近,我注意到我们的一个测试有以下几行:
browser.actions().sendKeys(protractor.Key.RETURN);
意图是可以理解的,但它实际上什么都不做,因为perform()
没有被调用。出于某种原因,测试本身正在通过,这表明测试逻辑和以下期望存在问题。
我如何尽早发现此类问题,并且理想情况下,防止将此量角器/ WebDriverJS使用违规提交到存储库?
答案 0 :(得分:1)
一种选择是使用静态代码分析 - 有一个ESLint
linting实用程序,它有一组不同的插件。如今,有一个eslint-plugin-protractor
plugin除了其他特定于量角器的违规行为外,还有browser.actions()
without perform()
。
以下是此案例中ESLint
运行的输出:
/Users/user/job/app/specs/test.spec.js
36:13 error No perform() called on browser.actions() protractor/missing-perform
答案 1 :(得分:1)
我希望这可以通过(可编写脚本的)编辑器插件或linter规则来实现。
那就是说,评估测试脚本的最好方法当然是实际运行 - 但也要确保所有测试操作都有相应的断言/验证。
您的Key.RETURN
必须对DOM产生一些影响,或者启动一些操作,可以检测到其结果(页面更改,数据更改等),这可能比有意义且更容易阅读静态分析规则。