これは私の単純なコードです。
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;
}
そして、私のテスト方法も合格です!理由がわかりませんか?私のコードは何が問題なのですか?