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。我很抱歉 - 我想我會失明! –