如何让rails服务器使用黄瓜在测试期间使用的相同数据库?

时间:2010-04-15 04:49:01

标签: ruby-on-rails distributed cucumber

黄瓜测试首先在数据库中创建一个条目并将表单发布到第二个服务器。第二个服务器在后台进行一些处理,然后点击第一个应用程序(运行测试的地方),其中包含黄瓜测试需要了解的一些数据。

我已尝试在黄瓜测试运行时通过script/serverscript/server -e test运行主服务器,但我似乎无法强制服务器使用黄瓜正在使用的相同数据库它运行其步骤定义。也就是说,当第二服务器将一些数据推送到主服务器中的控制器时,主服务器不知道黄瓜在数据库中做出的任何条目。如何让黄瓜和主服务器使用相同的数据库?

3 个答案:

答案 0 :(得分:2)

您可以像这样共享环境设置。

配置/ database.yml的

test: &test
  adapter: mysql
  encoding: utf8
  reconnect: false
  database: baseproj_test
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock

cucumber:
  <<: *test

答案 1 :(得分:0)

似乎在Cucumber::Rails::World.use_transactional_fixtures = false中设置env.rb已解决了此问题。

编辑这不再适用于最新的黄瓜安装。 rails服务器没有通过黄瓜测试找到放入数据库的数据。

答案 2 :(得分:0)

你在评论中点击了解决方案(没有回复的业力)。测试在事务中运行,最后回滚。因此,外部服务器与Cucumber对数据库执行的任何查询的影响隔离开来。禁用事务性固定装置是可行的方法,但我不知道它为什么不起作用。

其他解决方案是:a)重新架构您的代码,这样您就不需要公共数据库(必然会在其他地方引起问题),或者b)让您的Cucumber测试进入第二个服务器的数据库(通过HTTP请求) ?)。