【发布时间】:2017-11-29 00:01:37
【问题描述】:
运行mix phx.gen.json Object Item items published_at:native_datetime 输出以下文件/测试:
迁移:
defmodule App.Repo.Migrations.CreateItems do
use Ecto.Migration
def change do
create table(:items) do
add :published_at, :naive_datetime
timestamps()
end
end
end
测试夹具:
@update_attrs %{ published_at: ~N[2011-05-18 15:01:01.000000] }
更新断言:
assert json_response(conn, 200)["data"] == %{
"published_at" => ~N[2011-05-18 15:01:01.000000] }
失败并出现以下情况:
code: assert json_response(conn, 200)["data"] == %{"published_at" => ~N"2011-05-18 15:01:01.000000",}
left: %{"published_at" => "2011-05-18T15:01:01.000000"}
right: %{"published_at" => ~N[2011-05-18 15:01:01.000000]}
将~N[..] 值替换为普通的“字符串化”时间戳,测试通过了。为了让它与定义的列类型一起工作,应用的默认更改是什么?
【问题讨论】:
-
您当前正在测试 json 响应,而不是实际数据类型。您可以直接执行查询...
-
嗯,我明白了,一个 json kv 对总是一个字符串。但是显示的示例是使用默认生成器 (
mix phx.gen.json Object Item items published_at:naive_datetime) 生成的;为了在默认情况下获得成功的行为,是否需要在配置中的某处指定一些内容?
标签: elixir phoenix-framework ecto