首页 > 解决方案 > 如何从类中删除外部依赖项

问题描述

我在我的主 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));
}

} 
}
} 

标签: c++

解决方案


根据您的问题描述,我真的只能猜测您到底想要实现什么。但作为一般性声明:单元测试几乎总是与您想要测试的类(和/或其参数化)的健壮干净的接口使用有关,至少在模拟/存根是要走的路的情况下。因此,如果您要测试的类使用了您要模拟的标准库中的大量数据类型,请为您的类的此输入应用合适的抽象。可以肯定的是,至少如果类实际上并不意味着存在于多态上下文中,这始终是一个比例问题。如果是这样的话,那么嘲笑可能不是要走的路。


推荐阅读