提问者:小点点

如何从类中移除外部依赖项


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

} 
}
} 

共1个答案

匿名用户

基于你的问题描述,我真的只能猜测你到底想要实现什么。但是作为一个概括的陈述:单元测试几乎总是在您想要测试的类(和/或它们的参数化)的健壮干净的接口使用中起起落落,至少如果嘲讽/断章取义是一条路的话。因此,如果您要测试的类使用了许多来自您想要模拟的标准库的数据类型,那么为您的类的输入应用一个合适的抽象。当然,这始终是一个相称性的问题,至少如果类实际上并不意味着存在于多态环境中。如果是这样的话,嘲笑可能就不是办法了。