Как мне указать пользовательский форматер в spec_helper.rb? - PullRequest
3 голосов
/ 06 октября 2011

Я работаю над проектом Rails с тестами Rspec, выполнение которых занимает очень много времени.Чтобы выяснить, какие из них занимают так много времени, я решил создать собственный форматер для RSpec и распечатать его для каждого примера:

require 'rspec/core/formatters/base_formatter'

class TimestampFormatter < RSpec::Core::Formatters::BaseFormatter

  def initialize(output)
    super(output)
    @last_start = 0
  end

  def example_started(example)
    super(example)
    output.print "Example started: " << example.description
    @last_start = Time.new
  end

  def example_passed(example)
    super(example)
    output.print "Example finished"
    now = Time.new
    time_diff = now - @last_start

    hours,minutes,seconds,frac = Date.day_fraction_to_time(time_diff)
    output.print "Time elapsed: #{hours} hours, #{minutes} minutes and #{seconds} seconds"    
  end
end

И в моем spec_helper.rb япробовал следующее:

RSpec.configure do |config|      
  config.formatter = :timestamp
end

Но я получаю следующую ошибку при запуске rspec:

configuration.rb:217:in `formatter=': Formatter 'timestamp' unknown - maybe you meant 'documentation' or 'progress'?. (ArgumentError)

Как сделать мой пользовательский форматер доступным как символ?

Ответы [ 3 ]

4 голосов
/ 06 октября 2011
config.formatter = :timestamp

Это неправильно.Для пользовательских форматеров вам необходимо указать полное имя класса, в вашем случае

# if you load it manually
config.formatter = TimestampFormatter
# or if you do not want to autoload it by rspec means, but it should be in
# search path
config.formatter = 'TimestampFormatter'
2 голосов
/ 06 октября 2011

Это не совсем ответ, но вы знаете, что вы можете запустить RSpec с флагом --profile, чтобы сделать это, верно?:)

1 голос
/ 19 октября 2011

Вы можете скопировать модуль форматирования в каталог spec и выполнить команду rspec следующим образом:

rspec spec/ -f TimestampFormatter
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...