如何将FactoryBot与只读数据库一起使用

时间:2018-05-16 13:04:11

标签: ruby-on-rails factory-bot

我有2个Rails应用程序。第一个管理用户数据。第二个数据库只读访问第一个数据库以检索该用户数据。

user = FactoryBot.create(:user)
# Test user associations that only exist in the 2nd application

显然该行会因为数据库级权限而无法创建用户而失败。我的第一个想法是打开第一个数据库的_test数据库以获得完全写入权限,但这感觉不对,因为它将具有与生产环境不同的权限,可能隐藏/导致其他问题。 / p>

使用FactoryBot使用第一个模拟用户数据测试第二个应用程序方面的最佳方法是什么?

更新

我有一个想法是用数据预加载虚拟测试数据库,并确保第二个应用程序只读访问它。然后我的测试只是查询现有用户(虽然需要事先知道内部数据),而不是使用FactoryBot来创建。这是一种可行的方法吗?

1 个答案:

答案 0 :(得分:0)

加载夹具将是一个不错的选择,因为您可以使用您的用户数据交互来模拟只读数据库。

您需要读取与数据库类似的设置的yml或xml文件。解析文件的映射,然后您可以使用它。

快速举例:

def fixture_file_path(filename)
  Rails.root.join("spec/fixtures/#{filename}").to_s
end

def read_fixture_file(filename)
  File.read fixture_file_path(filename)
end

let(:fixture)      { read_fixture_file("file.xml") } 

然后在这里创建一个主题,这将是有用的,因为你将在许多测试中调用它..调用夹具

subject(:service) { described_class.call fixture }

然后你可以从那里开始构建交互性以测试你的需求。