c++ - 如何从类中删除外部依赖项
问题描述
我在我的主 cpp 中多次使用了一些外部依赖函数,我尝试为单元测试准备代码,所以我想用模拟实现替换外部依赖,我将如何在我的主 cpp 文件中将它们转换为模拟实现?
//ExternalDependencies.hpp
#include <cstdint>
#include <set>
#include <unordered_set>
namespace lab04{
namespace task_common{
namespace project{
uint32_t lab04::task_common::project::CalculateID(const uint32_t id)
{
constexpr uint32_t temp= 0xFFF0;
return id& temp;
}
inline StreamType lab04::task_common::project::GetType(const uint32_t width)
{
switch (width)
{
case 1:
Type = Type::Short;
break;
case 0:
Type = Type::Long;
break;
default:
THROW(ConfigErr, "Eror!");
}
return Type;
}
uint32_t lab04::task_common::project::CalculateBS(const uint32_t Count, const uint32_t Size)
{
return ((Count + 146) *(Size * 1676));
}
}
}
}
解决方案
根据您的问题描述,我真的只能猜测您到底想要实现什么。但作为一般性声明:单元测试几乎总是与您想要测试的类(和/或其参数化)的健壮干净的接口使用有关,至少在模拟/存根是要走的路的情况下。因此,如果您要测试的类使用了您要模拟的标准库中的大量数据类型,请为您的类的此输入应用合适的抽象。可以肯定的是,至少如果类实际上并不意味着存在于多态上下文中,这始终是一个比例问题。如果是这样的话,那么嘲笑可能不是要走的路。
推荐阅读
- unity3d - 在 Canvas 内计算 3D 对象的大小
- angular - ng-bootstrap 和组件之间的数据绑定不起作用
- ruby-on-rails - 是否可以限制与 ActiveModelSerializers 关联的字段?
- jquery - API数据返回,使用数组显示数据使用JQuery
- kotlin - 为什么 lateinit 不能与 elvis 运算符一起使用,以及它与可选项的具体不同之处
- php - Apache 在子目录中重写 htaccess
- reactjs - 无法通过 webpack/babelrc 转换装饰器(高阶组件)
- python - 主函数不会运行
- java - 无法更改进度条的可见性
- html - 背景附件:固定在 Chrome 上向后移动