微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

gmock基类的构造器实例化与另一个实例

如何解决gmock基类的构造器实例化与另一个实例

在下面的示例中,我想模拟“ TestB类”,因为“ TestA类”具有外部依赖性。

示例代码

*file : testA.h*
template <typename s>
class TestA : public class TestBase
{
.....
struct ConstructionToken
{
//`Code for construction token`
};
explicit TestA(ConstructionToken&& token) noexcept
        : TestBase(token.ID,token.Con)
.....
};

*file : testB.h*
class TestB : public class TestA
{
.....
TestB(ConstructionToken&& token)
: TestA<TestB>(std::move(token)){}
.....
};

*file : testC.h*
class TestC : public class TestB
{
.....
TestC(ConstructionToken&& token)
: TestB(std::move(token)){}
.....
};

测试代码

*File : Dependency_test.cpP*
TEST_F(DependencyCheckTest,DependencyCase1)
{
.......
// auto token = preconstruct the instance.
TestC cObj(std::move(token));
}

问题 在为“ TestC”类创建的测试代码对象中。

  1. 有什么方法可以模拟“ Class TestB”构造函数? “ TestA类”具有外部依赖性,因此我不需要调用TestA。

注意: 除了构造函数之外,我还可以模拟其他方法

解决方法

我无法忽略对基类ctor的调用-ctor在C ++中从来都不是虚拟的,因此您无法覆盖它们。

在您的情况下,我建议使所有类都从具有默认ctor和默认虚拟dtor的纯虚拟类,如果可能的话,使所有其他方法变为纯虚拟。这样可以确保更好的举动并消除此类问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。