首页 > 解决方案 > 使用 React 和 Selenium-Webdriver 和 Rails 作为后端的前端测试

问题描述

我只想测试前端部分。所以,这是我的问题:

背景

我有一个强大的 Ruby on Rails (V3.2) 后端应用程序和一个带有 ReactJs (V16.4) 的全新且独立的前端应用程序。

问题

我们在 Selenium-Webdriver 和 JestJs 的帮助下开始测试 React 应用程序,我们设法尝试了几个视图,但是当我们向 rails API 发出 POST 请求时出现了问题。

由于测试,我不想用垃圾填充我的数据库(开发)。

例如:当我想测试新用户的创建时会发生什么?

可能的解决方案

我在考虑 3 个解决方案:

  1. 拦截 API 调用并通过模仿它们的响应来模拟它们(例如:在使用 selenium-webdriver 提交点击时)。
  2. 通过 React 使用 Rails 测试环境
  3. 只需反向调用 API,这将意味着在控制器中创建通常不需要的操作。(例如:为每个帖子做一个删除)

标签: ruby-on-railsreactjstestingselenium-webdriverjestjs

解决方案


这取决于您是要测试整个堆栈(前端/后端)还是只测试前端部分。

前端测试

如果您只想测试前端部分,请使用您的第一个解决方案:模拟 API 调用。

如果您直接使用 selenium-webdriver,您将受到限制。我建议使用nightwatchtestcafe。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 端点:


推荐阅读