我正在尝试在遗留应用程序中重构代码并遇到代码看起来像这样的情况
namespace DB
{
void GetDataBase(IDataBase** db);
}
有很多不同的地方可以调用它,我想测试这些方法但是替换返回的结果。我可以使用某种设计来正确地模拟这个吗?
我拥有的是这个,但它看起来不是一个好方法,虽然它有效
namespace DB
{
void GetDataBase(IDataBase** db);
void SetTestDataBase(IDataBase* db);
}
还有很多其他类似的情况,我很想知道如何改进它。
答案 0 :(得分:1)
你建议的方式没问题,但它污染了测试代码,你可能需要更多这样的方法。另请注意,如果启动了静态变量并使用此功能,则可能无效。
我建议做的是两者之一 -
两种方法都确保在main之前调用的静态方法都没有使用你想要模拟的get方法。