Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 模拟受保护的setter_C#_Unit Testing - Fatal编程技术网

C# 模拟受保护的setter

C# 模拟受保护的setter,c#,unit-testing,C#,Unit Testing,我的实体设置器都是私有的,所以我使用构造函数初始化实体 现在我需要编写单元测试,并且需要实例化多个对象。“问题”是我不想创建构造函数只是为了用一些随机数据实例化我的实体。相反,我想利用C#easy方法来实现这一点: var user = new User() { Name = "John", LastName = "Smith" }; 我考虑的一个选项是将setter设置为内部,并将InternalsVisibleTo设置为。但我不希望其他实体设置这些属性 不过,我认为我不能用Moq做到这一点

我的实体设置器都是私有的,所以我使用构造函数初始化实体

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

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。