C# 模拟受保护的setter
我的实体设置器都是私有的,所以我使用构造函数初始化实体 现在我需要编写单元测试,并且需要实例化多个对象。“问题”是我不想创建构造函数只是为了用一些随机数据实例化我的实体。相反,我想利用C#easy方法来实现这一点:C# 模拟受保护的setter,c#,unit-testing,C#,Unit Testing,我的实体设置器都是私有的,所以我使用构造函数初始化实体 现在我需要编写单元测试,并且需要实例化多个对象。“问题”是我不想创建构造函数只是为了用一些随机数据实例化我的实体。相反,我想利用C#easy方法来实现这一点: var user = new User() { Name = "John", LastName = "Smith" }; 我考虑的一个选项是将setter设置为内部,并将InternalsVisibleTo设置为。但我不希望其他实体设置这些属性 不过,我认为我不能用Moq做到这一点
var user = new User() { Name = "John", LastName = "Smith" };
我考虑的一个选项是将setter设置为内部,并将InternalsVisibleTo设置为
。但我不希望其他实体设置这些属性
不过,我认为我不能用
Moq
做到这一点。有没有其他方法可以解决这个问题?如果您的目标只是能够模拟受保护的属性,那么您应该能够模拟它们,如果您通过执行以下操作公开getter:
public int A{get;protected set;}
另一个选项是扩展您尝试测试的类,并且该类的测试版本可以使用构造函数或公共方法来设置属性。如果您的目标只是能够模拟受保护的属性,那么您应该能够模拟它们,如果您通过执行以下操作将getter公开:
public int A{get;protected set;}
另一个选项是扩展您尝试测试的类,该类的测试版本可以使用构造函数或公共方法来设置属性。+1对于第二个选项,只需创建一个从User派生的TestUser,并在其中添加调用受保护setter的公共setter。+1对于第二个选项,只需创建一个从User派生的TestUser,并在其中添加调用受保护setter的公共setter。