假设我有这样的构造函数
internal Func<...> MyFunc { get; set; }
public SomeClass(ISomeParam param)
: base(param)
{
MyFunc = MyMethod;
MyPropertyX = MyFunc(someOtherParams);
}
如何在测试中更改该 Func?因此,使用与测试不同的模拟函数调用构造函数。我尝试过类似的方法但不起作用。
var SubjectUnderTest = new MyClass(params) {
MyFunc = MyNewMethodInsteadOfThatOneInClass
};
在不深入设计细节的情况下,可以选择通过
InternalsVisibleTo
使内部结构对测试项目可见,例如通过将以下内容添加到测试项目 .csproj 文件中:
<ItemGroup>
<InternalsVisibleTo Include ="YourTestProjectAssemblyName"/>
</ItemGroup>