ruby-on-rails - 使用 Cucumber Rails 进行数据库清理事务

标签 ruby-on-rails selenium cucumber capybara

我正在为注册表单编写一个场景。

     @abc

     @selenium

     Scenario:Non registered user signs up
        Given I am on the sign-up page
        When I fill in the following:
          |first_name|Anidhya|
          |last_name|Ahuja|
          |email|<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="81e0efe8e5e9f8e0c1e6ece0e8edafe2eeec" rel="noreferrer noopener nofollow">[email protected]</a>|
          |password|123456|
        And I press "submit"
        Then I should see "Registration complete"

我想在这个场景之后使用数据库清理器回滚测试数据库,以便我可以一次又一次地使用这个场景。

为此,我在 env.rb 文件中写道:

begin
  require 'database_cleaner'
  require 'database_cleaner/cucumber'
  DatabaseCleaner.strategy = :transaction

  Cucumber::Rails::World.use_transactional_fixtures = true

rescue NameError
  raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it."
end 


Before('@abc') do
  DatabaseCleaner.start
end
After('@abc') do
  DatabaseCleaner.clean
end

现在,当我运行该场景时,用户被保存在数据库中,并且数据库清理器失败。我没有看到任何错误消息

  • 能否请您说明如何仅在一种情况下使用数据库清理器。我只想在这种情况下使用清理器。
  • 您还可以提供使用截断和事务之间的重要区别吗。我认为截断会清除整个数据库,但我不希望这样。
  • 还有比这更好的注册测试方法吗?

最佳答案

您无法使用 selenium 运行事务,因为测试在应用程序的两个单独实例上运行 AFAIK

关于ruby-on-rails - 使用 Cucumber Rails 进行数据库清理事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7511520/

相关文章:

selenium - 如何设置 Fluentlenium 以在不同的浏览器驱动程序中运行?

ruby-on-rails - 如何告诉 capybara-webkit 不要忽略确认框(或者只是测试它们的内容)

ruby-on-rails - rails 3 : assets pipeline + many layouts

python - 在 driver.execute_script() 中使用伪选择器时无法将某些元素滚动到 View 中

ruby-on-rails - Rails 验证错误未显示

java - 使用 Jsoup/Selenium 从网站获取 "::before"标签后的数字数据

java - Bamboo 中的 Cucumber 报告插件

maven-cucumber-reporting 插件没有生成报告 - 没有任何反应

ruby-on-rails - 如何在使用 Ruby on Rails ActiveSupport::Concern 功能时包含模块 "nest"?

ruby-on-rails - 是:on => :create valid for a before_save callback in Rails 3. 2.3