【问题标题】:Rails engines testingRails 引擎测试
【发布时间】:2014-12-16 15:30:07
【问题描述】:

我们使用的 Rails 引擎必须能够从包含的应用程序访问模型和行为,但是因为我们在一个虚拟应用程序中进行测试,所以我们无法使用这些东西进行测试,最终会模拟和存根整个应用程序只为了编写简单的测试而离开了世界的一半。

是否有某种方式,通过配置、代码或只是农场动物的仪式牺牲,我可以让我们的引擎测试在包含应用程序的上下文中运行,而不是在虚拟测试应用程序中运行?

【问题讨论】:

  • 我想在这种情况下将目标功能(以可测试的方式)合并到虚拟应用程序中是不可行的?
  • 挑战在于确保重复的功能保持最新。我只是希望能够直接引用它。实际上,我更愿意以完全不同的方式来做这件事。

标签: ruby-on-rails ruby-on-rails-3 rails-engines


【解决方案1】:

我会以不同的方式处理它

  • 建立消费应用程序应遵守的接口。然后假设一个有效的应用程序总是按照它应该的方式使用你的 gem
  • 给定定义的接口,从 gem 的角度来看,任何使用 gem 的应用程序看起来应该是一样的。因此,拥有一个模拟应用程序来设置一个示例域以在您的 gem 的上下文中进行测试就可以了。不要模拟任何东西,使用实际模型或与引擎交互所需的任何层创建应用程序

如果无法定义最终的使用方式,或者您仍希望让消费者能够测试集成点,那么请提供测试助手。类似于rack-rest,它为机架用户提供了一个测试基础设施。

这些可以在应用程序使用的任何测试框架中被要求和使用,并且可以在认为需要时使用。

【讨论】:

  • 是的。老实说,考虑到这个项目的要求,我一开始就不会使用引擎,但是做主的人坚持这个设置。而且我不想在引擎/测试空间中复制实际模型。
  • 你不能遵循最后一点,然后创建允许消费者应用程序开发人员编写测试的断言方法吗?
猜你喜欢
  • 2012-07-18
  • 2015-10-20
  • 2012-05-13
  • 1970-01-01
  • 2011-11-19
  • 1970-01-01
  • 1970-01-01
  • 2012-05-27
  • 1970-01-01
相关资源
最近更新 更多