Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用进程外数据库访问进行Rails测试?_Java_Ruby On Rails_Servlets_Transactions_Rspec - Fatal编程技术网

Java 使用进程外数据库访问进行Rails测试?

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管理的

我正在构建一个Rails应用程序,它需要一些模型与一些必要的Java库进行交互。为此,我想在MRI上使用Rails,而不是JRuby或RBJ。Java代码只需要对Rails应用程序管理的数据库表进行读取访问

一种方法是设置一个Servlet来读取Rails应用程序的数据库表

问题在于,在测试过程中,使用Rails事务性装置会使测试过程中的所有数据库活动(如Servlet)失效

对于部署来说,这不是问题,但在这些条件下如何进行自动化测试还不清楚


如何使用RSpec测试依赖于能够访问Rails管理的表的外部进程的Rails模型?

关闭事务装置,数据库写入应该对外部进程可见。在要使用put执行此操作的测试类中:

self.use_transactional_fixtures = false

或者,如果您希望它适用于所有内容,请将其放入
test/test\u helper.rb
。请注意,您的测试可能运行得较慢,因为所有内容实际上都在访问数据库。

谢谢。缺点似乎是在运行每个测试之前不再清除数据库。我可以在一个before(:each)中手动清除它。我真的想要一些自动化程度更高的东西。解决这个问题还有其他方法吗?如果您依赖于数据在外部可见,那么,没有其他方法。每次跑步后,你都必须清理并重新整理你的固定装置。通过向测试类添加
fixture:model1、:model2、
,您可以在不编写额外代码的情况下完成此操作。