Ruby on rails 在Cumber中创建的ActiveRecord对象未显示在Rails web app中

Ruby on rails 在Cumber中创建的ActiveRecord对象未显示在Rails web app中,ruby-on-rails,cucumber,Ruby On Rails,Cucumber,我正在使用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

我正在使用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

但是,当我访问站点并尝试登录时,该用户在数据库中不可见。打电话给新唱片?在@admin_上,用户返回false,但rails应用程序无法看到它。你知道为什么这张唱片没有出现吗?我已经确认cucumber和rails应用程序都指向同一个数据库。

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


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

如果Cucumber和Rails使用两个不同的连接,则可能会发生这种情况。在这种情况下,您可能需要关闭事务。关于这个主题的更多信息:

正如@Ernest所说,有两种联系。但是关闭交易会降低您的套件速度,所以请使用以下代码:,并阅读:特别是第3节。

如果没有管理员用户代码和管理会话的控制器代码,您的问题毫无意义对不起,我想我不清楚。当我在步骤定义中创建用户时,当我尝试使用capybara登录该用户时,它不会出现在数据库中。此外,我还尝试禁用env.rb文件
#cumber::Rails::World.use_transactional_fixtures=true
中的事务,但这似乎没有任何区别。我在web应用程序中创建的用户(即控件中的用户)存在,但我在步骤定义中创建的管理员用户不存在。