1

我正在使用 cucumber (cucumber (1.1.0) cucumber-rails (0.3.2)) 尝试在 rails 2.3.14 应用程序上测试 Web UI。问题是我在功能步骤中创建用户:

visit("/")

@admin_user = Factory.create :admin_user
@admin_user.email
@admin_user.update_attributes :password => "testtest", :password_confirmation => "testtest"
@admin_user.register!
@admin_user.activate!

click_link("Login")
fill_in "Email:", :with => @admin_user.email
fill_in "Password:", :with => "testtest"

find("input[type=image]").click

但是,当我访问该站点并尝试登录时,该用户在数据库中不可见。调用 new_record?on @admin_user 返回 false 但 rails 应用程序看不到它。关于为什么这个记录没有出现的任何想法?我已经确认 cucumber 和 rails 应用程序都指向同一个数据库。

4

3 回答 3

2

正如@Ernest 所说,有两个连接。但是关闭转换会减慢您的套件速度,因此请使用以下代码:https ://gist.github.com/470808 ,并阅读:http ://blog.plataformatec.com.br/2011/12/three-tips-提高测试套件的性能/尤其是第 3 节。

于 2012-04-13T07:35:57.367 回答
0

你确定他们指向同一个数据库吗?通常 cucumber 将在测试环境中运行,您访问该站点将处于开发或生产环境中。

如果您已更改 config/database.yml 以将测试环境指向开发或生产数据库,Cucumber 通常将每个场景包装在回滚的事务中。

于 2012-04-13T07:22:10.693 回答
0

如果 Cucumber 和 Rails 使用两个不同的连接,则可能会发生这种情况。对于这种情况,您可能需要关闭事务。更多关于这里的主题:https ://github.com/cucumber/cucumber/wiki/Browsers-and-Transactions

于 2012-04-13T07:31:00.207 回答