我目前正在爲我的域模型編寫單元測試。單元測試包含從數據庫填充的列表的域模型
放置一點上下文我有一個角色組類,它有一個角色列表,它也有一個當前有這個角色組分配給他們的用戶列表。
角色組被分配給一個用戶,所以所有的方法都在用戶域模型中。這意味着Role Group側的Users屬性基本上從數據庫中提取。
角色組和用戶都是聚合根,它們都可以獨立存在。
單元測試域模型包含填充的從數據庫
我所用是我無法測試以下CanArchive方法,因爲我有一個用戶的財產沒有辦法關閉添加掙扎列表。除了使用我不想使用的Add方法的不好之處之外,它打破了控制自己的數據的域模型的整個想法。
所以我不確定我的領域模型是錯誤的還是這個邏輯應該放在一個Service中,因爲它是兩個Aggregate Roots之間的交互。
角色組類:
public bool Archived { get; private set; }
public int Id { get; private set; }
public string Name { get; private set; }
public virtual IList<Role> Roles { get; private set; }
public virtual IList<User> Users { get; private set; }
更新存檔的方法:
private void UpdateArchived(bool archived)
{
if (archived && !CanArchive())
{
throw new InvalidOperationException("Role Group can not be archvied.");
}
Archived = archived;
}
方法來檢查是否角色組可以存檔
private bool CanArchive()
{
if (Users.Count > 0)
{
return false;
}
return true;
}
方法,設置用戶的角色組在用戶類中 這是在用戶創建或在用戶中更新時調用的接口。
private void UpdateRoleGroup(RoleGroup roleGroup)
{
if (roleGroup == null)
{
throw new ArgumentNullException("roleGroup", "Role Group can not be null.");
}
RoleGroup = roleGroup;
}
你可以在你的標準應用程序流中發佈「IList Users」嗎? –
NikolaiDante
我在User類中添加了設置用戶的角色組的方法。我唯一能想到的就是讓UpdateRoleGroup方法從RoleGroup的用戶列表中添加或刪除用戶,但感覺不太正確。 – user1866606
我還沒有看到RoleGroup上的用戶列表被填充到哪裏。通常這就是我需要在我的單元測試的設置/排列部分進行交互的東西。 – NikolaiDante