ruby-on-rails - 如何测试依赖于其托管应用程序的 Rails 引擎?

标签 ruby-on-rails ruby rspec

我有一个 Rails 应用程序,我正在尝试将代码拆分到多个引擎中。

主应用程序拥有一个主 Controller - Api::ApplicationController,引擎中的所有 Controller 都继承自该 Controller ,例如:

Api::Products::ProductsController < Api::ApplicationController

我使用 RSpec 进行测试。

当我运行应用程序时一切正常,但是当我尝试运行引擎的 Rspecs 时,出现错误:

uninitialized constant Api::ApplicationController

如您所知,引擎不能与应用程序分开工作,所以我尝试在规范 (products_controller_spec.rb) 中 stub Api::ApplicationController,但它甚至在开始运行之前就失败了规范。

我想也许我应该以不同的方式实现它,并在某处注入(inject) ApplicationController 功能而不是从它继承,但我不知道在哪里。

我考虑的另一件事是将引擎的规范注入(inject)托管应用程序并从那里运行它,但它似乎不起作用,而且不可能以这种方式调试规范。

如何测试?

最佳答案

Rails 引擎创建小型虚拟应用程序用于测试目的。您需要创建一个最小的应用程序,它具有测试应用程序所需的功能,并且它将使用它来运行它的规范。

看这里:

http://edgeguides.rubyonrails.org/engines.html#testing-an-engine

对于这种情况,我认为更好的解决方案是将所有引擎作为模块共享的共享应用程序代码放在所有引擎都可以包含的共享 gem 中。

关于ruby-on-rails - 如何测试依赖于其托管应用程序的 Rails 引擎?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28797452/

相关文章:

ruby-on-rails - 使用 net/ldap 登录 Rails LDAP

ruby-on-rails - 设计错误: email can't be blank

ruby-on-rails - Date.new 的参数错误

mysql - 如何修复命令 "mysql -v"上的错误

ruby-on-rails - 无方法错误 : undefined method `context' in rspec test

ruby-on-rails - 排序和限制

ruby-on-rails - 您如何在不对ActiveRecord::Base方法进行使用做任何假设的情况下对它们进行 stub ?

ruby-on-rails - 将 Amazon Simple Notification service SNS 与 ruby​​ 结合使用

ruby-on-rails - 如何在 RSpec Rails 请求规范中传递额外参数

ruby-on-rails - FactoryGirl 的 RSpec 测试失败,隔离时通过