save_and_open_page已停止提供我的CSS

时间:2013-04-22 00:57:43

标签: css ruby-on-rails testing capybara

每当我在测试中调用save_and_open_page时,我的测试设置就能很好地提供用css正确格式化的页面。然后我设置了一些javascript测试并对我的设置进行了一些更改(抱歉,我无法详细说明所有内容 - 我没有记录好事情)。在进行更改后,当我调用save_and_open_page时,我现在在浏览器中获得未格式化的HTML。

这是我的spec / 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'

关于我为阻止它正常工作所采取的措施的任何线索?

2 个答案:

答案 0 :(得分:12)

只是一个FYI,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以及所有参与其中的人

哈尼

答案 1 :(得分:4)

这是从pull 609

中的Capybara中删除的

Jnicklas:

  

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

     

资产重写必须要进行。这是严重的最糟糕的部分   整个Capybara代码库。这是一个从未奏效的糟糕黑客   从一开始,它给我们带来的微薄好处很容易   通过优秀的调试方法实现,比如运行相同的测试   在Selenium并通过例如停止执行睡觉,获取或绑定.pry。

     

如果这让你们中的一些人感到烦恼,我很抱歉,但这是我的工作   关于什么进入和留下什么的艰难决定。如果我不这样做   那个工作,只是接受一切,我们不会最终得到一个好的   结果。所以我希望你能接受这个决定,即使你   可能不同意它。

根据Save_and_open_page not picking up scss markup,您可以考虑使用capybara-screenshot - gem制作屏幕截图。

这个宝石将介绍save_and_open_screenshot

然而,正如jnicklas在拉动请求的讨论中提到的那样,有充分的理由不想要这个功能:

  

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