gpt4 book ai didi

ruby-on-rails - 格式化 JSON API 的 Active Record 时间戳

转载 作者:太空宇宙 更新时间:2023-11-03 17:15:24 24 4
gpt4 key购买 nike

我对 GET 请求的测试失败了——问题在于 ActiveRecord 的时间戳在响应中的格式化方式。 RSpec 测试期望数据格式为 Mon, 29 Dec 2014 13:37:09 UTC +00:00,,但它却收到 2014-12-29T13:37:09Z。有什么方法可以更改 ActiveRecord 时间戳的格式,或者 RSpec 测试所期望的格式?

编辑:

这是失败的测试:

describe 'GET /v1/tasks/:id' do 
it 'returns an task by :id' do
task = create(:task)
get "/v1/tasks/#{task.id}"

expect(response_json).to eq(
{
'id' => task.id,
'title' => task.title,
'note' => task.note,
'due_date' => task.due_date,
'created_at' => task.created_at,
'updated_at' => task.updated_at
}
)
end
end

测试在 created_atupdated_at 上失败。 response_json 是一个解析 JSON 响应的辅助方法。

这是测试失败的地方:

   expected: {"id"=>1, "title"=>"MyString", "note"=>"MyText", "due_date"=>Mon, 29 Dec 2014, "created_at"=>Mon, 29 Dec 2014 13:37:09 UTC +00:00, "updated_at"=>Mon, 29 Dec 2014 13:37:09 UTC +00:00}
got: {"id"=>1, "title"=>"MyString", "note"=>"MyText", "due_date"=>"2014-12-29", "created_at"=>"2014-12-29T13:37:09Z", "updated_at"=>"2014-12-29T13:37:09Z"}

最佳答案

解决方案非常简单 — 我已指定日期应使用 to_formatted_s() 方法使用 ISO 8601 进行格式化。以下是正确的、通过的版本:

require 'spec_helper'

describe 'GET /v1/tasks/:id' do
it 'returns an task by :id' do
task = create(:task)
get "/v1/tasks/#{task.id}"

expect(response_json).to eq(
{
'id' => task.id,
'title' => task.title,
'note' => task.note,
'due_date' => task.due_date.to_formatted_s(:iso8601),
'created_at' => task.created_at.to_formatted_s(:iso8601),
'updated_at' => task.updated_at.to_formatted_s(:iso8601)
}
)
end
end

关于ruby-on-rails - 格式化 JSON API 的 Active Record 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27690976/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com