簡體   English   中英

caypbara / rspec / selenium-webdriver沒有終端輸出

[英]No terminal output with caypbara / rspec / selenium-webdriver

我一直在使用capybara和selenium-webdriver編寫rspec測試。 幾乎沒有失敗,每當我運行這些測試之一時,控制台輸出就消失了。

例如:

~/code/code> bundle exec rspec spec/features/interactions_spec.rb 

InteractionsSpec
~/code/code> 

那就是我所見過的一切。 瀏覽器啟動,執行我已經編碼的動作,但是看不到通常的輸出。

有時,我會改為將其視為輸出(是!):

InteractionsSpec
  login as admin works
  login as user works

Finished in 16.84 seconds (files took 7.9 seconds to load)
2 examples, 0 failures

是什么導致測試的輸出消失? 這幾乎使得不可能編寫測試-因為我不知道運行了什么,通過了什么,失敗了,或者為什么失敗了。

我正在使用這些Gems,但是執行捆綁包更新不會更改行為。

  • 水豚(2.4.4)
  • 水豚截圖(1.0.3)
  • rspec(3.0.0)
  • rspec-activemodel-mocks(1.0.1)
  • rspec-collection_matchers(1.0.0)
  • rspec核心(3.0.3)
  • rspec-期望(3.0.3)
  • rspec-mocks(3.0.3)
  • rspec-rails(3.0.2)
  • rspec支持(3.0.3)
  • selenium-webdriver(2.44.0)
  • 匹配器(2.6.2)

其他涉及的軟件:

  • Firefox 33.1.1(Chrome 39.0.2171.65(64位)具有相同的行為)
  • OSX 10.9.5
  • Rails 4.1.4

更新這似乎可以解決該問題一段時間,即使睡眠時間為1ms。 但是,那只是一個臨時解決方法,此問題仍然存在。

RSpec.configure do |config|
  config.before(:each, :type => :feature) do
    sleep(0.5)
  end
end

在我看來,記錄器正在通過其他線程對logger.silence()的調用而變得沉默。

當您將sleep()放入代碼中時,便產生了其他固定日志記錄級別的線程-這就是為什么休眠多長時間都無關緊要的原因是上下文切換可以解決此問題。

當您升級activesupport gem時,此提交可以在https://github.com/rails/activerecord-session_store/commit/f92d1135fc620cb4d65239ef286b267945bbbbc6解決(如您所說)。 閱讀該提交后,請注意logger.silence的新線程安全實現。 這就是為什么它可以解決您的問題。

這里的active_support / logger_silence.rb的舊實現不是線程安全的:

require 'active_support/concern'

module LoggerSilence
  extend ActiveSupport::Concern

  included do
    cattr_accessor :silencer
    self.silencer = true
  end

  # Silences the logger for the duration of the block.
  def silence(temporary_level = Logger::ERROR)
    if silencer
      begin
        old_logger_level, self.level = level, temporary_level
        yield self
      ensure
        self.level = old_logger_level
      end
    else
      yield self
    end
  end
end

在使用多線程的水豚下初始化Rails環境時,似乎存在許多與線程安全和競爭條件有關的問題。 Rob的答案解釋了為什么它開始工作(將日志記錄固定為在activerecord-session_store中進行線程保存)。

這些問題和提交似乎也相關

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM