我如何使用允许零或必需的属性制作无效的属性测试通行证



使用ECTO 2.0我正在尝试进行此测试通行证:

defmodule PlexServer.FleetInstanceTest do
  use PlexServer.ModelCase
  alias PlexServer.FleetInstance
  @invalid_attrs %{some_random_data: "random data"}
  test "changeset with invalid attributes" do
    changeset = FleetInstance.changeset(%FleetInstance{}, @invalid_attrs)
    refute changeset.valid?
  end
end

这是模型

defmodule PlexServer.FleetInstance do
  use PlexServer.Web, :model
  schema "fleet_instances" do
    has_many :ship_instance, PlexServer.ShipInstance
    timestamps
  end
  def changeset(model, params \ %{}) do
    model
      |> cast(params, [])
      |> validate_required([])
  end
end

似乎铸造只是忽略了允许列表中不在的任何数据,因此更改集被认为有效,未能使测试失败。

是的,Ecto.Changeset.cast/3将忽略第三个参数中未指定的任何字段,并且当您将[]传递给validate_required时,确实没有可能会使您当前版本的PlexServer.FleetInstance.changeset/2返回valid?: falseparams

最新更新