我的前端是一个基于 EmberJS 的应用程序。它本质上是完全异步的,所以用 Capybara 测试它是 pain和 misery .另一方面,Ember 提供了一个开箱即用的出色测试套件,使验收测试变得有趣和有效。
通常,夹具或后端模拟用于验收测试 Ember 应用程序。但是针对模拟的测试根本不能满足我:
所以我想测试真正的后端!将 Ember 设置为使用本地后端实例进行测试很简单。但是问题是后端将在单个测试甚至测试 session 之间保持其状态 .
这就是为什么我正在考虑在 Rails 中实现一个特殊的公共(public) API:
我是一名前端开发人员,对 Rails 有粗略的了解。 Factory Girl和 Database Cleaner似乎是适合这项工作的工具,但绝对没有关于如何在 Rails 的正常测试环境之外使用它们的信息。我想我需要一个 Controller 或 Rails 引擎什么的。
所以问题是:我如何在 Rails 中创建一个 API,前端可以使用它来告诉 Rails 使用夹具工厂设置某个数据库状态 , 而 Rails 在非测试模式下运行 i。 e.服务 REST API 而不是通过 RSpec/Capybara/Cucumber 运行?
奖励功能 :应在前端定义夹具工厂属性,以便将测试代码存储在一个地方。因此,后端应该能够通过特殊的 API 接受夹具工厂属性。默认值仍然可以在后端的代码库中定义。
我相信这可能成为验收/集成测试的最佳实践。如果我设法实现它,我 promise 会发布一个 gem。
最佳答案
可能是这样的
配置/路由.rb
namespace 'test_api' do
resource 'db_transaction', only: [:create, :destroy]
end if Rails.env.test?
Controller /test_api/db_transactions_controller.rb
require 'database_cleaner'
def create
DatabaseCleaner.start
end
def destroy
DatabaseCleaner.clean
end
关于ruby-on-rails - 在前端运行集成/验收测试。前端需要一个 API 来告诉 Rails 为每个测试设置哪个数据库状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30402853/