每当我在测试中调用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'
关于我为阻止它正常工作所采取的措施的任何线索?
答案 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的不同之处