Java 使用进程外数据库访问进行Rails测试?
我正在构建一个Rails应用程序,它需要一些模型与一些必要的Java库进行交互。为此,我想在MRI上使用Rails,而不是JRuby或RBJ。Java代码只需要对Rails应用程序管理的数据库表进行读取访问 一种方法是设置一个Servlet来读取Rails应用程序的数据库表 问题在于,在测试过程中,使用Rails事务性装置会使测试过程中的所有数据库活动(如Servlet)失效 对于部署来说,这不是问题,但在这些条件下如何进行自动化测试还不清楚Java 使用进程外数据库访问进行Rails测试?,java,ruby-on-rails,servlets,transactions,rspec,Java,Ruby On Rails,Servlets,Transactions,Rspec,我正在构建一个Rails应用程序,它需要一些模型与一些必要的Java库进行交互。为此,我想在MRI上使用Rails,而不是JRuby或RBJ。Java代码只需要对Rails应用程序管理的数据库表进行读取访问 一种方法是设置一个Servlet来读取Rails应用程序的数据库表 问题在于,在测试过程中,使用Rails事务性装置会使测试过程中的所有数据库活动(如Servlet)失效 对于部署来说,这不是问题,但在这些条件下如何进行自动化测试还不清楚 如何使用RSpec测试依赖于能够访问Rails管理的
如何使用RSpec测试依赖于能够访问Rails管理的表的外部进程的Rails模型?关闭事务装置,数据库写入应该对外部进程可见。在要使用put执行此操作的测试类中:
self.use_transactional_fixtures = false
或者,如果您希望它适用于所有内容,请将其放入
test/test\u helper.rb
。请注意,您的测试可能运行得较慢,因为所有内容实际上都在访问数据库。谢谢。缺点似乎是在运行每个测试之前不再清除数据库。我可以在一个before(:each)中手动清除它。我真的想要一些自动化程度更高的东西。解决这个问题还有其他方法吗?如果您依赖于数据在外部可见,那么,没有其他方法。每次跑步后,你都必须清理并重新整理你的固定装置。通过向测试类添加fixture:model1、:model2、
,您可以在不编写额外代码的情况下完成此操作。