首页 > 解决方案 > 如何使用 shim 和静态工厂方法进行单元测试?

问题描述

我有一个包含多个静态工厂方法的类(带有受保护的构造函数)。我用这些来明确参数指的是什么。例如:

MyClass.FromFile(string filename);
MyClass.FromString(string filename);
MyClass.FromParameterSet(...);

我用这些来给不同的构造方法一个名字/含义(我知道会有人告诉我不要这样做,但为了争论,请让我们这样讨论)。

但是,我在单元测试时遇到了麻烦MyClass。我想检查是否MyClass正确初始化了它的内部值,因为它做了复杂的事情。当然,它不会暴露它们。通常一个 shim 可以解决这个问题,但是使用静态工厂方法我不能以与我在“真实代码”中相同的方式创建一个实例,因为它会创建一个MyClassand not的实例MyShimmedClass

显而易见的答案是不使用静态工厂方法。我可以这样做,但我想知道是否有办法解决这个问题

(如果有人想知道,我正在使用 C#。)

标签: c#unit-testingshimfactory-method

解决方案


推荐阅读