我正在使用ex_machina为我的单元测试创建夹具。
我正在使用 ExMachina 将一些记录保存到数据库中,insert(:comment)
但我的断言是错误的,因为 ExMachina 总是加载关系,而当我使用 Ecto 获取而不调用Repo.preload
.
假设我有 2 家工厂comment
,并且user
:
def user_factory do
%User{
name: "some name"
}
end
def comment_factory do
%Comment{
content: "some content",
user: build(:user)
}
end
当我测试时
test "should retrieve last comment" do
comment = fixture(:comment)
assert Comment.get_last_comment() == comment
end
断言如果失败,因为在左边我有
%Comment{
...,
content: "some content",
user: #Ecto.Association.NotLoaded<association :user is not loaded>
}
在右边
%Comment{
...,
content: "some content",
user: %User{ name: "some name" }
}
我试图避免:
在我左边的记录上使用
Repo.preload
,因为有时有很多依赖项单独测试每个属性
提前感谢您的帮助