所以我有一个名为 User
的类。它有一个 internal
构造函数。我想创建一个 User
对象,这样我就可以像这样模拟它:
public ISessionManagerInstance MockedSessionManager()
{
var manager = new Mock<ISessionManagerInstance>();
var company = new Chatham.Web.Business.Classes.Company(500, "", "", Enumerations.WebRelationshipInfo.NotSet, "", 0, 0, Data.Login.TeamOwnership.NotSet, 0, 0, false, null, false);
manager.Setup(p => p.Company).Returns(company);
Chatham.Web.Business.Classes.User displayUser = typeof(Chatham.Web.Business.Classes.User);
displayUser.EntityID = 1786;
manager.Setup(p => p.DisplayUser).Returns(displayUser);
return manager.Object;
}
现在,Company
有一个构造函数,所以这很容易。但是 User
有一个仅供内部使用。有什么办法可以创建一个 User
并为其设置一个 int
属性,这样我就可以将该对象传回 mock?
最佳答案
我可以想到两种可能性:
创建一个 IUser
接口(interface),让 User 实现它并针对它创建模拟。这是 .NET 测试领域中非常普遍的做法。您使用 Users 的所有方法现在很可能需要接受 IUser
引用。
另一种可能性(我不推荐,但它存在)是使用 InternalsVisibleTo装配属性。然后可以从测试组件中看到生产组件的内部结构。
关于c# - 使类可测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5782770/