Сбои RSpec Timecop вокруг Date, похоже, связаны с часовым поясом - PullRequest
0 голосов
/ 14 сентября 2018

У нас есть несколько тестов (спецификаций), которые терпят неудачу около даты / времени. Догадываясь, что это проблема UTC, но не уверен, почему эти спецификации прошли в прошлый раз, когда проект был затронут (~ 8 месяцев назад)!?!

# спецификация / функция / комментарии / creation_spec.rb

feature 'Comment creation', type: :feature, js: true do
  include CommentsPageHelpers
  ...
  let!(:current_date) { Date.parse('2017-01-03') }
  ...

  background do
    Timecop.freeze(current_date)
    ...
  end

  after do
    Timecop.return
  end

  shared_examples 'added comment' do |position:, text:|
    scenario 'adds single comment' do
        ...
        expect(page).to have_text 'January 3rd, 2017'
      end
    end
  end

Просмотр (угловой шаблон) # app / views / templates / comment.html.slim

.comment
  ...
  {{ comment.createdAt | moment: 'MMMM Do, YYYY' }}

# Ошибка RSpec

Comment creation for image behaves like added comment adds single comment
     Failure/Error: expect(page).to have_text 'January 3rd, 2017'
       expected to find text "January 3rd, 2017" in "John Snow First comment message January 2nd, 2017Remove"
     Shared Example Group: "added comment" called from ./spec/features/comments/creation_spec.rb:76
     # ./spec/features/comments/creation_spec.rb:42:in `block (4 levels) in <top (required)>'
     # ./spec/features/comments/creation_spec.rb:39:in `block (3 levels) in <top (required)>'

1 Ответ

0 голосов
/ 28 сентября 2018

Изменение строки let! на две строки ниже, кажется, исправило вещи. Не знаете, что еще может сломаться или сломается для разработчиков в других часовых поясах?!?

Time.zone = 'Pacific Time (US & Canada)'
let!(:current_date) { Time.parse('2017-01-03').in_time_zone }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...