2

每当我save_and_open_page从测试中调用时,我的测试设置工作得非常好,可以很好地提供用 css 正确格式化的页面。然后我设置了一些 javascript 测试并对我的设置进行了一些更改(抱歉,我无法详细说明它们 - 我没有足够好的文档记录)。进行更改后,当我调用save_and_open_page.

这是我的规范/spec_helper.rb

require 'rubygems'
require 'spork'

Spork.prefork do

  ENV["RAILS_ENV"] ||= 'test'
  require File.expand_path("../../config/environment", __FILE__)
  require 'rspec/rails'
  require 'rspec/autorun'
  require 'capybara/rspec'
  require 'factory_girl'
  Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
  RSpec.configure do |config|
    config.fixture_path = "#{::Rails.root}/spec/fixtures"
    config.add_setting(:seed_tables)
    config.seed_tables = %w(notifications drug_names drug_modes drug_prefs db_tables db_columns column_values)
    config.use_transactional_fixtures = false
    config.before(:suite) do
      DatabaseCleaner.strategy = :truncation, {except: config.seed_tables}
    end
    config.before(:each) do
      DatabaseCleaner.start
    end
    config.after(:each) do
      DatabaseCleaner.clean
    end
    config.infer_base_class_for_anonymous_controllers = false
    config.include Features::SessionHelpers, type: :feature
    config.order = "random"
  end
  Spork.each_run do
    FactoryGirl.reload
  end
end

我的测试环境中安装了以下 gem;

gem 'rspec-rails', '2.13.0'
gem 'guard-rspec', '2.4.1'
gem 'rb-fsevent', '0.9.3'
gem 'terminal-notifier-guard', '1.5.3'
gem 'guard-spork', '1.5.0'
gem 'spork', '0.9.2'
gem 'capybara', '2.1.0'
gem 'timecop', '0.5.9.2'
gem 'launchy', '2.2.0'
gem 'factory_girl_rails', '4.2.1'
gem 'shoulda', '3.3.2'
gem 'faker', '1.1.2'
gem 'database_cleaner', '0.9.1'
gem 'selenium-webdriver', '2.32.1'

关于我做了什么来阻止它正常工作的任何线索?

4

2 回答 2

14

仅供参考,save_and_open_page 作品由这两个链接的优秀人士提供。这就是我在 spec_helper.rb 底部的内容,以使其工作

# to allow CSS and Javascript to be loaded when we use save_and_open_page, the
# development server must be running at localhost:3000 as specified below or
# wherever you want. See original issue here:
#https://github.com/jnicklas/capybara/pull/609
# and final resolution here:
#https://github.com/jnicklas/capybara/pull/958
Capybara.asset_host = "http://localhost:3000"

享受并感谢 sdhull 和 jnicklas 以及所有为此工作的人

哈尼族

于 2014-07-26T18:46:23.350 回答
4

这是从 Capybara 中删除的,在pull 609

尼克拉斯:

凭借我作为水豚生命的仁慈独裁者的身份,我在这里做出行政决定:

必须进行资产重写。它是整个 Capybara 代码库中最糟糕的部分。这是一个可怕的 hack,它从一开始就无法正常工作,它给我们带来的微薄好处可以通过卓越的调试方法轻松实现,例如在 Selenium 中运行相同的测试并通过例如 sleep、gets 或 binding.pry 停止执行。

如果这惹恼了你们中的一些人,我很抱歉,但我的工作是做出艰难的决定,决定什么是进去,什么是外边。如果我不做那份工作,简单地接受一切,我们最终不会有好的结果。所以我希望你能接受这个决定,即使你可能不同意它。

根据Save_and_open_page 不选择 scss 标记,您可以考虑使用capybara-screenshot-gem 制作屏幕截图。

这颗宝石将介绍save_and_open_screenshot

然而,正如 jnicklas 在 pull-request 的讨论中提到的那样,有充分的理由根本不想要这个特性:

...因为 RackTest 没有 CSS 和 JS,所以现在您看到的页面与 Capybara 的不同

于 2013-07-17T13:03:39.250 回答