黄瓜测试首先在数据库中创建一个条目并将表单发布到第二个服务器。第二个服务器在后台进行一些处理,然后点击第一个应用程序(运行测试的地方),其中包含黄瓜测试需要了解的一些数据。
我已尝试在黄瓜测试运行时通过script/server
和script/server -e test
运行主服务器,但我似乎无法强制服务器使用黄瓜正在使用的相同数据库它运行其步骤定义。也就是说,当第二服务器将一些数据推送到主服务器中的控制器时,主服务器不知道黄瓜在数据库中做出的任何条目。如何让黄瓜和主服务器使用相同的数据库?
答案 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请求) ?)。