我的Ecto Repo和我的其中一个架构有问题 的测试即可。架构如下:
defmodule Elixirserver.Transactions.Bank do
@behaviour Elixirserver.ContentDump
use Ecto.Schema
import Ecto.Changeset
alias Elixirserver.Transactions.Account
@attrs [:name, :code]
schema "banks" do
field(:name, :string)
field(:code, :string)
has_many(:account, Account)
timestamps()
end
@doc false
def changeset(bank, attrs \\ []) do
bank
|> cast(attrs, @attrs)
|> validate_required(@attrs)
end
def to_json(bank) do
%{
id: bank.id,
name: bank.name,
code: bank.code,
type: "BANK"
}
end
end
当我尝试执行测试时,我获得以下内容:
(UndefinedFunctionError) function
Elixirserver.Transactions.Bank.fetch/2 is undefined
(Elixirserver.Transactions.Bank does not implement the Access behaviour)
测试是这样的:
def create(conn, %{"bank" => bank_params}) do
with {:ok, %Bank{} = bank} <- Transactions.create_bank(bank_params) do
conn
|> put_status(:created)
|> put_resp_header("location", bank_path(conn, :show, bank))
|> render("show.json", id: bank["id"])
end
end
现在,显然这是因为未实现Access行为。我必须明确提供吗?
我正在使用ExMachina生成灯具,并使用mix phx.gen.json
生成资源。