angularjs - 从 Protractor 测试编排非 JavaScript 后端

标签 angularjs testing protractor

我正在编写一个应用程序,它有一个 LAMP 后端,它提供了一个 RESTful API。此 API 由 AngularJS 前端使用。

我单独对 API/GUI 进行了单元和集成测试。现在,我正在扩展我的测试范围,以涵盖完整的从前到后的测试套件。

我一直在研究 Protractor ,这对于我的前后测试的基于浏览器的输入非常有用。 但是,我正在努力了解如何将其与 PHP 后端的编排集成。


在 PHP 集成测试中,我有一组实用程序类,它们使用预先确定的 universe 填充系统(即数据库)。例如;有一个名为“Bob”的预先创建的用户和一个名为“Alice”的管理员。

在每个集成测试用例之间,整个宇宙都被重置为这个基本状态,因此在测试中与 Bob 和 Alice 的任何交互都会被重置。

这是我想从 Protractor 管理的编排示例之一。但是,我看不到一个简单的模式来与构建测试宇宙的 PHP 代码集成。

在初始填充世界之后,我希望能够执行其他编排任务以使系统进入所需的目标状态;例如锁定 Bob 的用户帐户。

我不想直接从 Protractor 代码访问 MySQL 数据库,如何重用我的 PHP 逻辑并从 Protractor 调用业务逻辑?

我可以提供 RESTful 编排 URL。但这似乎很危险,因为如果将其投入生产,将会带来严重的风险。


有许多关于其他 StackOverflow 问题的建议(例如 this one)建议使用 Mocks。这些似乎完全偏离了目标;给定的 Protractor 专为前后测试而设计。


最佳答案

业务逻辑

我们已经做到了,但方式不同。我们已经在我们的 API 服务代码中编写了该业务逻辑,它将检查您尝试重置的环境类型。如果您的目标环境是本地代码库或测试环境,那么它将提供您的 Rest /reset api。

if(environment === qa || environment === local) {
// Allow reset service
} 
else {
// No reset service
} 

关于angularjs - 从 Protractor 测试编排非 JavaScript 后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33333852/

相关文章:

python - 如何在 pytest 中使用测试资源(如固定的 yaml 文件)?

angularjs - Protractor 元素缓存

c# - NUnit:访问 TearDown() 中的失败消息

javascript - element.getText().then(function) 没有被执行

selenium-webdriver - 是否可以在远程浏览器上使用头部运行 Protractor 测试?

javascript - 无法保留来自 $http.get() 的数据 - AngularJS 1.3.13

javascript - 当元素以 Angular 加载时如何获取具有高度的元素?

javascript - Protractor/Node 版本兼容性

javascript - 自动完成文本框未触发所选值

AngularJS UI-Bootstrap,如何将 minDate 设置为 90 天前,将 maxDate 设置为今天?