angularjs – 在测试前端时重置单独的后端服务
我有一个运行在localhost:8000的API项目连接到测试数据库,我有一个在localhost:9000运行的前端角应用程序.在每个前端测试用例运行后如何重置数据库?我正在使用Protractor进行前端E2E测试.我不想嘲笑整个后端.虽然这会使我的测试运行得更快,但是,每次用户交互都会导致对服务器状态的更改,然后是对同一服务器端点的更多请求,在不同点处以不同的返回方式存根这些端点可能代码太多而不仅仅是说话到真正的服务器.我宁愿将数据库重置为初始状态或刷新所有表.
一种可能的方法是在我的API项目中编写我的前端E2E测试套件.从现在起它由后端测试运行器运行,它可以在每个测试用例之前轻松重置数据库.但我宁愿将我的测试保留在我的前端项目中,因为我的api也将服务于其他客户端,而不仅仅是浏览器客户端.由于我的后端是在PHP中并使用Phpunit进行测试,而我使用Protractor测试我的前端,将它集成到后端似乎有点错位. 你遇到过这个问题,你的解决方案是什么?如何协调E2E(或集成?)测试中的两个项目? 解决方法
我遇到了同样的问题.我的解决方案是添加一个“重置”api端点,以便在E2E测试开始之前将数据库恢复到其状态.
我们使用ASP.NET WebApi来构建RESTful服务.这是我的代码结构. [HttpGet] [Route("reset")] public IHttpAction Reset(){ // check and remove records added in the e2e tests // check and restore the records modified in the e2e tests } 因此,对此测试/重置方法的api调用有助于将后端数据库恢复到其原始状态.我们可以将调用放在afterAll()中(如果你使用的是JasmineJS).或者您可以通过Postman或Fiddler进行GET调用来进行手动重置. 有时,我有多个重置api方法来调用.这样我就可以按功能组进行测试和重置.比如,对用户管理功能执行e2d测试并重置该部分数据,然后继续下一个功能. 有一点需要注意的是,如果对表的主键进行排序,则删除测试中添加的数据将会破坏该序列.确保我们的测试不是“期望”在该主键上. 整个目标是能够重新运行e2e测试并获得相同的结果. 当然,如果允许,另一个好方法是在我们的e2e测试之前备份数据库并在测试结束后恢复它.手动,愚蠢,但有时方便和足以让我们的e2e测试重新运行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |