c# - 如何使用 shim 和静态工厂方法进行单元测试?
问题描述
我有一个包含多个静态工厂方法的类(带有受保护的构造函数)。我用这些来明确参数指的是什么。例如:
MyClass.FromFile(string filename);
MyClass.FromString(string filename);
MyClass.FromParameterSet(...);
我用这些来给不同的构造方法一个名字/含义(我知道会有人告诉我不要这样做,但为了争论,请让我们这样讨论)。
但是,我在单元测试时遇到了麻烦MyClass
。我想检查是否MyClass
正确初始化了它的内部值,因为它做了复杂的事情。当然,它不会暴露它们。通常一个 shim 可以解决这个问题,但是使用静态工厂方法我不能以与我在“真实代码”中相同的方式创建一个实例,因为它会创建一个MyClass
and not的实例MyShimmedClass
。
显而易见的答案是不使用静态工厂方法。我可以这样做,但我想知道是否有办法解决这个问题。
(如果有人想知道,我正在使用 C#。)
解决方案
推荐阅读
- reactjs - setState 的问题和太多的重新渲染
- flutter - 为什么颤振静态最终变量改变了
- javascript - JavaScript 对用户输入的变量的操作
- vuejs3 - Vuelidate vue.js 最新的 vue3 使用 helpers.forEach 方法来处理对象数组
- kubernetes - kubctl get deployment READY 0/0 含义
- python - 从混合高斯分布生成二维样本数据集
- java - 谁能帮我设置开发生态环境的代理服务器?
- c++ - CRT _crt_debugger_hook 第一个字节设置为 0xcc
- javascript - Blueprintjs 多选以编程方式设置值
- reactjs - 渲染两个嵌套对象