【问题标题】:How do I log my Selenium actions into example.metadata[:extra_failure_lines]?如何将我的 Selenium 操作记录到 example.metadata[:extra_failure_lines]?
【发布时间】:2016-03-30 20:57:49
【问题描述】:

RSpec 3.4.0 有 example.metadata[:extra_failure_lines] 在失败时打印的东西。如何将 Selenium/Capybara 操作记录到其中?

RSpec.configure do |c|
  c.before do |example|
    example.metadata[:extra_failure_lines] = []
  end
end

Capybara::DSL.module_eval do
  alias :old_visit :visit
  def visit path
    example.metadata[:extra_failure_lines] << "visit #{path}"
    old_visit path
  end
end

这将失败,因为Capybara::DSL 不知道example

【问题讨论】:

    标签: ruby logging selenium-webdriver rspec capybara


    【解决方案1】:

    我已将example 公开为 RSpec 静态模块变量:

    RSpec.module_eval do
      class << self
        attr_accessor :exposed_example
      end
    end
    
    RSpec.configure do |c|
      c.before do |example|
        RSpec.exposed_example = example
        example.metadata[:extra_failure_lines] = []
      end
    end
    
    # you may use another approaches of monkeypatching
    Capybara::DSL.module_eval do
      old = instance_method :visit
      define_method :visit do |path|
        RSpec.exposed_example.metadata[:extra_failure_lines] << "visit #{path.inspect}"
        old.bind(self).(path)
      end
    end
    

    【讨论】:

      猜你喜欢
      • 2016-06-06
      • 2014-11-19
      • 2018-03-13
      • 1970-01-01
      • 2014-07-24
      • 2012-08-18
      • 2023-04-03
      • 2011-09-20
      • 1970-01-01
      相关资源
      最近更新 更多