Я со следующей проблемой:RSpec и Factory Girl - Ошибка с поля даты и времени
окружающей среды: Ruby: 2.3.1 и Rails 5.0.0.1
Я пытаюсь проверить поля даты и времени с RSpec и Factory Girl.
Я получил эту ошибку:
expected: "2016-11-11 13:30:31 UTC" (From Factory Girl)
got: "2016-11-11T13:30:31.218Z" (From database)
Мой код:
klass_object = FactoryGirl.create (: символ)
Klass = Character
RSpec.shared_examples 'API GET #index' do |klass|
before { get :index, params: params, accept: Mime[:json] }
it "returns a list of #{klass.to_s.underscore.pluralize}" do
object_array = json(response.body)
klass_attributes = klass.attribute_names.without("id", "created_at", "updated_at").map(&:to_sym)
klass_attributes.each do |attribute|
object_array.each do |object|
expect(object[attribute].to_s).to eq(klass_object[attribute].to_s)
end
end
end
...
end
Фабрика:
FactoryGirl.define do
factory :character do
marvel_id { Faker::Number.number(6).to_i }
name { Faker::Superhero.name }
description { Faker::Hipster.paragraphs(1) }
modified { Faker::Date.between(DateTime.now - 1, DateTime.now) }
factory :invalid_character do
id ''
name ''
marvel_id ''
modified ''
end
end
конец
Как исправить эту проблему?
Я сделал это, он работает, но я думаю, что это не так хорошо. Есть лучший способ сделать это?
object_array.each do |object|
if ActiveSupport::TimeWithZone == klass_object[attribute].class
expect(object[attribute].to_datetime.strftime("%Y-%m-%d %H:%M:%S")).to eq(klass_object[attribute].to_datetime.strftime("%Y-%m-%d %H:%M:%S"))
else
expect(object[attribute].to_s).to eq(klass_object[attribute].to_s)
end
end
Благодарим за помощь.
В этом случае я выполняю цикл для каждого атрибута класса. Таким образом, не все атрибуты являются датами. –