1
这是我的简单代码。使用moq属性的测试方法
public class Permission
{
public string Name { get; set; }
public bool IsEnable { get; set; }
}
public class User
{
public virtual List<Permission> Permissions { get; set; }
public bool ContainPermission(string permissionName)
{
var result = Permissions.Where(p => p.Name == permissionName && p.IsEnable).FirstOrDefault();
return result != null;
}
}
而且我想测试方法ContainPermission。 我正在使用Moq并编写此代码:
[TestClass]
public class UserPermissionTest
{
[TestMethod]
public void UserContainPermission_WhenPermissionEnable_ReturnTrue()
{
var mockUser = new Mock<User>();
mockUser.SetupGet(p => p.Permissions).Returns(
() => new List<Permission>
{
new Permission {Name = "Name", IsEnable = true}
});
var user = mockUser.Object;
var isContainPermission = user.ContainPermission("Name");
Assert.IsTrue(isContainPermission);
}
}
它的工作原理!测试方法通过。但我决定再检查一次。我改变了方法ContainPermission:
public bool ContainPermission(string permissionName)
{
Permissions.Clear();
var result = Permissions.Where(p => p.Name == permissionName && p.IsEnable).FirstOrDefault();
return result != null;
}
而且我的测试方法也通过了!我不明白为什么?我的代码有什么问题?
使用调试器可以帮助你。你确定。清除()清除? –
Ofc。我很抱歉 - 我想我会失明! –