Я пытаюсь изолировать свой класс, поэтому из-за обмена внешними бесплатными функциями с фиктивными реализациями я создал свой фиктивный класс для бесплатных функций, которые имели внешнюю зависимость в другом классе. Итак, как я буду вызывать эти фиктивные функции в своем классе?
Есть ли какая-нибудь реализация, которую вы можете мне предложить?
Я думаю о создании уникального указателя и вызове его, но я не совсем уверен в этом.
Какой подход я должен использовать для этого?
#include "source/common/main/dpc.hpp"
#include "source/common/main/dt.hpp"
#include <gmock/gmock.h>
namespace test {
namespace {
class dpcMock
{
public:
MOCK_METHOD(bool, isVS, (const uint32_t id), ());
MOCK_METHOD(St, gpType, (const uint32_t width), ());
static dpcMock* activeMock;
};
}
}
#include "dpcMock.hpp"
#include "source/common/main/dpc.hpp"
#include <CppUTestExt/MockSupport.h>
test::dpcMock* test::dpcMock::activeMock = nullptr;
namespace common{
namespace main{
namespace {
bool isVS(const uint32_t id)
{
if (::test::dpcMock::activeMock == nullptr)
{
return true;
}
return test::dpcMock::activeMock->isVS(id);
}
inline St gpType(const uint32_t width)
{
if (::test::dpcMock::activeMock == nullptr)
{
return {};
}
return test::dpcMock::activeMock->gpType(width);
}
}
}
}
#include <memory>
#include <set>
#include "common/main/bm.hpp"
#include "common/main/ut/mocks/dpcMock.hpp"
namespace lucky{
namespace trap{
namespace main{
using namespace common::main;
class Dopy
{
public:
void cDL(const sDL& sDLp);
void cUL(const sUL& sULp);
void csDL(const sDL& sDLp);
void csUL(const sUL& sULp);
private:
std::unique_ptr<sa> sa_fr;
std::unique_ptr<bm> bm_fr;
};
}
}
}