Я просто попытался использовать вспомогательный метод времени Rails travel в одной из моих спецификаций:

scenario 'published_at allows to set a publishing date in the future' do
  magazine_article.update_attribute(:published_at, Time.now + 1.day)
  expect { visit magazine_article_path(magazine_article.magazine_category, magazine_article) }
         .to raise_error(ActiveRecord::RecordNotFound)

  travel 2.days do
    visit magazine_article_path(magazine_article.magazine_category, magazine_article)
    expect(page).to have_content('Super awesome article')
  end
end 

Это дает мне это:

NoMethodError:
   undefined method `travel' for #<RSpec::ExampleGroups::MagazineArticles::AsUser::Viewing:0x007f84a7a95640>

Что мне не хватает?

http://api.rubyonrails.org/classes/ActiveSupport/Testing/TimeHelpers.html

24
Flip 8 Ноя 2016 в 15:45

2 ответа

Лучший ответ

Чтобы использовать эти помощники, вы должны включить их в свои тесты.

Вы можете сделать это, включив его в один набор тестов:

describe MyClass do
  include ActiveSupport::Testing::TimeHelpers
end

Или глобально:

RSpec.configure do |config|
  config.include ActiveSupport::Testing::TimeHelpers
end
40
Andrey Deineko 25 Авг 2018 в 14:33

После @andrey-deineko ...

Я создал файл time_helpers.rb под spec\support следующим образом:

RSpec.configure do |config|
  config.include ActiveSupport::Testing::TimeHelpers
end
4
Jon Kern 28 Апр 2017 в 19:05