ruby-on-rails - 使用 React 和 Selenium-Webdriver 和 Rails 作为后端的前端测试
问题描述
我只想测试前端部分。所以,这是我的问题:
背景
我有一个强大的 Ruby on Rails (V3.2) 后端应用程序和一个带有 ReactJs (V16.4) 的全新且独立的前端应用程序。
问题
我们在 Selenium-Webdriver 和 JestJs 的帮助下开始测试 React 应用程序,我们设法尝试了几个视图,但是当我们向 rails API 发出 POST 请求时出现了问题。
由于测试,我不想用垃圾填充我的数据库(开发)。
例如:当我想测试新用户的创建时会发生什么?
可能的解决方案
我在考虑 3 个解决方案:
- 拦截 API 调用并通过模仿它们的响应来模拟它们(例如:在使用 selenium-webdriver 提交点击时)。
- 通过 React 使用 Rails 测试环境
- 只需反向调用 API,这将意味着在控制器中创建通常不需要的操作。(例如:为每个帖子做一个删除)
解决方案
这取决于您是要测试整个堆栈(前端/后端)还是只测试前端部分。
前端测试
如果您只想测试前端部分,请使用您的第一个解决方案:模拟 API 调用。
如果您直接使用 selenium-webdriver,您将受到限制。我建议使用nightwatch或testcafe。Testcafe 不依赖于硒。这在最新版本的 Nightwatch 中也是可选的。
Testcafe 包含一个请求模拟 API:http ://devexpress.github.io/testcafe/documentation/test-api/intercepting-http-requests/mocking-http-responses.html
使用 Nightwatch,您可以使用nock。请参阅Nightwatch 模拟 HTTP 请求
全栈测试
如果您想测试整个堆栈,您可以使用这种方法:实现自定义 API 端点以允许在测试执行之前或之后将数据库重置为干净状态。(如“/myapi/clean”)
您应该在生产环境中禁用对此端点的访问。
然后,您可以实现测试挂钩(之前/之后)来调用您的自定义 api 端点:
推荐阅读
- sql - 添加列以计算主值下的子值数量
- reactjs - 切换按钮时出现“TypeError:visible.map 不是函数”
- android - 如何将 TestCoroutineScope 与 android 数据存储区一起使用?
- javafx - JavaFX Spinner 在警报后继续旋转
- sql - 如何使用 postgresql 计算不同组之间的相关性
- javascript - Laravel-Mix:在 Laravel-Mix 升级到 v6 后,Vue 在 app.js 和 bootstrap.js 中不可用
- string - 用字符串编号替换地图字符
- laravel - 未找到存储中的 Laravel 文件
- javascript - d3js 不显示 GeoJson 数据
- vb.net - 使用 TOR 检查 URL 是否是实时的