我有一个遗留数据库,我的ruby on rails应用程序试图获取一些数据,我想围绕一些功能编写一些测试。我没有迁移,因为这个数据库是另一个部门的责任。
我为我想要测试的AR模型设置了FactoryGirl。我使用build_stubbed
方法,但似乎Rails或Rspec对尝试连接数据库很着迷,即使我不想保存任何内容。
每次运行测试时都会出现此错误:
ActiveRecord::StatementInvalid:
PG::UndefinedTable: ERROR: relation "yourTable" does not exist
^
就像我之前说过的那样,我的目标是不保存任何我想要能够测试某些功能的东西,而根本不需要与peristence层进行交互。
如何配置Rspec / FactoryGirl,让我根本不为这些特定型号连接数据库?
答案 0 :(得分:0)
您是否考虑过只使用Struct类?我不认为FactoryGirl会允许您在没有现有表的情况下创建存根,但是如果Rails中不存在表,可以尝试将Struct分配给测试中的常量。
YourTable = Struct.new(:column_name1, :column_name2)
instance_of_table = YourTable.new(value1, value2)
instance_of_table.column_name1 => value1
This article by Philip Brown详细介绍了Structs和OpenStructs的使用,希望这也会有所帮助。