【问题标题】:How can I get a rails server to use the same database that cucumber uses during a test?如何让 rails 服务器使用与 cucumber 在测试期间使用的数据库相同的数据库?
【发布时间】:2011-06-28 11:34:58
【问题描述】:

黄瓜测试首先在数据库中创建一个条目并将表单发布到第二个服务器。第二台服务器在后台进行一些处理,然后使用黄瓜测试需要知道的一些数据访问第一个应用程序(正在运行测试的地方)。

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

【问题讨论】:

  • 你是否有机会在使用西班牙凉菜汤方面开辟前沿?

标签: ruby-on-rails distributed cucumber


【解决方案1】:

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

config/database.yml

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

cucumber:
  <<: *test

【讨论】:

  • 这是黄瓜在安装时对这个文件所做的。我用来启动服务器的命令:(script/server -e test) is not working 仍然没有解决我的问题。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    看来在env.rb 中设置Cucumber::Rails::World.use_transactional_fixtures = false 已经解决了这个问题。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-19
      • 2011-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-31
      • 2016-12-07
      • 1970-01-01
      相关资源
      最近更新 更多