【发布时间】:2014-04-28 21:42:18
【问题描述】:
有什么方法可以用 Protractor/WebDriver 进行单元测试吗?我最理想的做法是隔离单个指令/组件,模拟它的依赖关系,注入各种数据,然后在一堆浏览器中使用 Protractor 遍历它。
有没有办法做到这一点?
【问题讨论】:
标签: angularjs unit-testing protractor
有什么方法可以用 Protractor/WebDriver 进行单元测试吗?我最理想的做法是隔离单个指令/组件,模拟它的依赖关系,注入各种数据,然后在一堆浏览器中使用 Protractor 遍历它。
有没有办法做到这一点?
【问题讨论】:
标签: angularjs unit-testing protractor
量角器(更广泛地说,Selenium)通常用于自动化非技术最终用户能够自己执行的测试类型。话虽如此,有时在服务器上模拟各种错误情况可能很有用。你有几个选择:
onPrepare 脚本:使用onPrepare 脚本尽可能多地完成后端设置工作,如果可以提前这样做的话。在量角器配置文件 (see sample here) 中设置 onPrepare 属性以指向您的准备脚本,您可以在其中设置数据库中的记录、创建文件或您可能需要执行的任何其他操作。
使用protractor.addMockModule: 这允许您通过在调用 Protractor.get 时在 Angular 之前添加要加载的模块来模拟后端 API。有关示例,请参阅博客文章(搜索“超越基础”):
http://product.moveline.com/testing-angular-apps-end-to-end-with-protractor.html
在服务器上配置仅测试路由: 作为最后的手段,您可以在服务器上配置一些只能在执行任何后端处理的开发环境中访问的路由从您的端到端测试中需要。例如,如果您将 Node.js 与 Express.js 一起使用,您可能会执行以下操作。
仅测试路线:
// Store your server-side e2e methods in this file
var e2eBackend = require('./test/e2eBackend');
if (app.get('env') === "development") {
app.get('/e2e/simulateCrash', e2eBackend.simulateCrash);
// etc.
}
【讨论】:
Protractor 主要用于 e2e 测试。从最终用户的角度进行测试。 您可以使用 jasmine 框架进行单元测试,并且量角器 e2e 测试也支持 jasmine。
【讨论】: