我正在编写一个应用程序,它有一个 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/