【发布时间】:2011-02-01 21:20:54
【问题描述】:
我正在尝试为我的一个服务层编写我的第一个单元测试。我正在使用 nunit 和 moq(最新版本)。
我有一个 repo,但我会嘲笑它没问题。
public void Create(string email, int id)
{
User user = Repo.GetUserByEmail(email); // mock this out. and return a mocked user.
if user != null)
{
// check permission
var clearence = GetPermissions(user, PermissionTypes.Add, id);
// some other stuff
}
}
private static List<Permissions> GetPermissions(User user, PermissionTypes PermissionNeeded, int id)
{
List<PermissionLevel> clearence = user.PermissionLevels.Where(u => u.id == id &&
(u.Permission.Name == PermissionNeeded || u.Permission.Name == PermissionTypes.Owner)).ToList();
return clearence;
}
这就是我所拥有的。
现在让我明白的是这个许可。我不知道该怎么做。我不确定我是否必须创建一个包含 id 的权限级别的用户对象。
我不确定我是否可以模拟它,但我怀疑它,因为它是私人的。
第二个问题是我不确定如何创建“id”,因为“id”位于具有私有集的域类中,因为那是用于 nhibernate 的标准。
所以我不知道如何解决这个问题。
【问题讨论】:
-
你要测试什么代码?
GetPermissions或“// 其他一些东西”? -
dv-Jan de Vaan- 我猜的其他东西。基本上是一个 if 语句来检查权限,然后如果好创建一个任务(我的回购中的另一件事)。如果不是,则验证错误。我需要先通过这个方法,它必须返回一个大于 0 的计数器。
标签: c# unit-testing nunit moq