微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – 黄瓜测试突然停止

我有这样的功能
Feature: Searching chats
In order to find chats
As an user
I want to find different chats by username or ad name

Background:
  Given System prepares for chats
  And There is a few machines with names:
    | machine_1 |
    | machine_2 |
    | machine_3 |
  And There is a few services with names:
    | service_1 |
    | service_2 |
    | service_3 |
  And I have chats with ads owners

Scenario: Searching chats
  When I am logged in as a "user"
  And I go to chats page   # <- stops here
  Then I should see search results when I fill form with:
    | input  | results |
    | ma     | machine_1,machine_2,machine_3 |
    | se     | service_1,service_2,service_3 |

当我启动黄瓜功能(或场景)时,它突然停在步骤“我去聊天页面”没有任何错误消息.结果如下:

[alex@MacBookPro ~/my_project | master]$cucumber features/chat/search.feature
Using the default profile...
@javascript
Feature: Searching chats
  In order to find chats
  As an user
  I want to find different chats by username or ad name

  Background:                               # features/chat/search.feature:8
    Given System prepares for chats         # features/step_deFinitions/chats.steps.rb:11
    And There is a few machines with names: # features/step_deFinitions/machine.steps.rb:10
      | machine_1 |
      | machine_2 |
      | machine_3 |
    And There is a few services with names: # features/step_deFinitions/service.steps.rb:144
      | service_1 |
      | service_2 |
      | service_3 |
    And I have chats with ads owners        # features/step_deFinitions/chats.steps.rb:5

  Scenario: Searching chats                                 # features/chat/search.feature:20
    When I am logged in as a "user"                         # features/step_deFinitions/user.steps.rb:68
    And I go to chats page                                  # features/step_deFinitions/chats.steps.rb:17
[alex@MacBookPro~/my_project | master]$

这是我的“下降”步骤:

When /^I go to chats page$/ do
  visit root_path

  within('.global-menu') do
    click_on username(@current_user)
    click_on I18n.t('views.menu.profile.links.dashboard')
  end

  click_on I18n.t('views.menu.profile.links.chats')
end

Then(/^I should see search results when I fill form with:$/) do |table|
  table.hashes.each do |search_data|
    ### searching ###
    @page.query.set search_data['input']

    # for AJAX search
    sleep 1

    ### show results ###
    search_data['results'].split(',').each do |res|
      page.should have_content res.mb_chars.upcase
    end

    within('#chats') do
      page.all('.chat').length.should == search_data['results'].split(',').size
    end
  end
end

我正在使用带黄瓜的capybara-webkit.那是我的env.rb:

require 'rubygems'
require 'spork'
require 'capybara'
require 'capybara/rspec'
require 'selenium-webdriver'
require 'site_prism'
require 'capybara-screenshot/cucumber'
# require 'cucumber/rails'


# 1) Tag your scenario (or feature) with @allow-rescue
#
# 2) Set the value below to true. Beware that doing this globally is not
# recommended as it will mask a lot of errors for you!
#
# ActionController::Base.allow_rescue = false

#############################################################################

ENV['SKIP_RAILS_ADMIN_INITIALIZER'] = 'false'                                   # This fixes weird errors with cucumber + rails_admin (http://makandracards.com/makandra/9597-rake-spec-+-rails_admin-weirdly-failing-specs).

#############################################################################

Before do
  DatabaseCleaner.strategy = :truncation

  DatabaseCleaner.clean
  FactoryGirl.create(:setting)
  ContactType.generate_contact_types
  ContactType.generate_ims
end

Spork.prefork do
  require 'cucumber/rails'
  require 'email_spec' # add this line if you use spork
  require 'email_spec/cucumber'
  Capybara.default_selector = :css
end

Spork.each_run do
  ActionController::Base.allow_rescue = false

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

  Capybara.register_driver :webkit do |app|
    Capybara::Webkit::Driver.new(app,:stderr => nil)
  end

  Capybara.javascript_driver = :webkit

  Cucumber::Rails::Database.javascript_strategy = :truncation
end

当我将项目更新为rails4时出现问题.有任何想法吗?

解决方法

我管理的许多开发人员发现Capybara-webkit确实存在问题且不一致.

poltergeist / PhantomJS比它有很多优点.一般来说:

>更确定性,因为问题场景更可能一直失败而不是片状
>与机器相关性较小;我们的套件现在在我们所有的测试环境中都表现得非常相似
>提供更好的错误消息
>当有Javascript错误时失败,即使测试会通过
>不挂,并且
>更容易安装.

这是在二月自动化测试SF聚会上的good post from Dave Schweisguthhis presentation,在那里他讨论了他的公司(Fandor)的测试设置/环境,问题,故障排除和快速比较.它可能有助于您追踪问题.

原文地址:https://www.jb51.cc/ruby/270290.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐