C# 单元测试构造函数中的替换方法

问题描述 投票:0回答:1

假设我有这样的构造函数

        internal Func<...> MyFunc { get; set; }
        public SomeClass(ISomeParam param)
                : base(param)
            {
                MyFunc = MyMethod;
                MyPropertyX = MyFunc(someOtherParams);
            }

如何在测试中更改该 Func?因此,使用与测试不同的模拟函数调用构造函数。我尝试过类似的方法但不起作用。

    var SubjectUnderTest = new MyClass(params) {
        MyFunc = MyNewMethodInsteadOfThatOneInClass
    };
c# .net moq
1个回答
1
投票

在不深入设计细节的情况下,可以选择通过

InternalsVisibleTo
使内部结构对测试项目可见,例如通过将以下内容添加到测试项目 .csproj 文件中:

<ItemGroup>
  <InternalsVisibleTo Include ="YourTestProjectAssemblyName"/>
</ItemGroup>
© www.soinside.com 2019 - 2024. All rights reserved.