在2个rails应用程序之间共享测试数据

时间:2016-10-27 15:52:15

标签: ruby-on-rails ruby testing integration-testing factory-bot

在我们的公司项目中,我们有2个Rails项目:A和B共享相同的数据库但不同的模型。我的老板不允许我将模型提取到两个项目的gem / rails引擎,因为我是新成员,我们的生产需要很多风险。所以我必须保持目前的状态。我研究了很多东西,但目前还没有解决方案。让我总结一下:

项目A通常用于创建数据并将数据保存到数据库,以便A中的模型始终保持最新状态。项目B用于加载数据,因此项目B没有将所有模型都设为A,而B中的某些模型缺乏关联。我的任务是为项目B添加测试。这是我的解决方案:

首先,我为两个项目共享一个数据库测试。

其次,在项目A中,我设置Factory Girl来创建测试数据。

所以问题是,从项目B开始,如何调用或触发项目A来运行A的Factory Girl以创建测试数据,以便项目B可以加载该数据并进行验证?

1 个答案:

答案 0 :(得分:0)

您可以编写rake任务,这些任务基本上可以在您的应用程序中运行一次性脚本,并且可以从命令行触发。

rails g task my_task_name

这将创建一个文件lib/tasks/my_task_name.rake。编写rake任务非常简单:

namespace :my_namespace do
  task :my_app => :environment do
    # create some db records here
  end
end

您称之为rake my_namespace:my_app

使用命名空间是可选的,但=> :environment部分很重要 - 这是从rails应用程序加载代码的内容。

当您运行rake任务时,将查看您所在的任何回购的lib/tasks文件夹。