2016-12-04 88 views
0

我的实体setter都是私有的,所以我使用构造函数来初始化我的实体。嘲讽受保护的setter

现在我需要编写单元测试,我需要实例化多个对象。 “问题”是我不想创建构造函数只是为了用一些随机数据实例化我的实体。相反,我想利用C#简单的方法来做到这一点:

var user = new User() { Name = "John", LastName = "Smith" }; 

一种选择我认为是使制定者内部,并设置InternalsVisibleTo。但我不希望其他实体设置这些属性。

不过我不认为我可以用Moq来做到这一点。有没有其他方法可以解决这个问题?

回答

2

如果你的目标只是为了能够通过做嘲笑的保护性能,你应该能够嘲笑他们,如果你做的getter市民:

public int A { get; protected set; }

另一种选择是扩展类的试图测试和类的测试版本可以有构造函数或公共方法来设置属性。

+0

对于第二个选项,只需创建一个从User派生出来的TestUser,然后在那里添加调用受保护的setter的公共setter。 – zaitsman