Phoenix 1.3 默认生成器 // naive_datetime 问题
Phoenix 1.3 default generators // naive_datetime problems
运行 mix phx.gen.json Object Item items published_at:native_datetime
输出以下 files/tests :
迁移:
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]}
用纯 "stringified" 时间戳替换 ~N[..]
值,测试通过。为了使其与定义的列类型一起使用,应用什么默认更改?
两件事:
assert
has it’s own handler为匹配运算符=
,使用它;
- 您应该从您的字符串构造
NaiveDateTime
结构(反之亦然)。
assert %{"published_at" => ~N[2011-05-18 15:01:01.000000]} =
conn
|> json_response(200)["data"]
|> NaiveDateTime.from_iso8601!()
或
assert %{"published_at" => "2011-05-18T15:01:01.000000"} =
json_response(conn, 200)["data"]
运行 mix phx.gen.json Object Item items published_at:native_datetime
输出以下 files/tests :
迁移:
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]}
用纯 "stringified" 时间戳替换 ~N[..]
值,测试通过。为了使其与定义的列类型一起使用,应用什么默认更改?
两件事:
assert
has it’s own handler为匹配运算符=
,使用它;- 您应该从您的字符串构造
NaiveDateTime
结构(反之亦然)。
assert %{"published_at" => ~N[2011-05-18 15:01:01.000000]} =
conn
|> json_response(200)["data"]
|> NaiveDateTime.from_iso8601!()
或
assert %{"published_at" => "2011-05-18T15:01:01.000000"} =
json_response(conn, 200)["data"]