gpt4 book ai didi

c++ - GMOCK - 模拟一个对象及其内部模拟方法

转载 作者:行者123 更新时间:2023-11-30 05:09:45 28 4
gpt4 key购买 nike

我正在为一个类编写 GMOCK 测试用例:

class A{ .. void Text() .. };

现在A类的一个成员方法中嵌入了一个B类类型的对象,也引用了静态成员方法:

void A::Text()
{
B bobj;
B::SMethod();
bobj->BMethod();
......
}

在这种情况下,我如何模拟 B 及其方法?

最佳答案

您可以测试从它派生的类,而不是测试 A,我们称它为 TestableA。在 A 中使 Text() virtual 并在覆盖中使用 B 的模拟。另外,看看 this question有关如何使用静态方法模拟类的更多想法。

尽管如此,最好的解决方案是通过引入接口(interface)(例如 InterfaceB)和注入(inject)来打破 AB 之间现有的紧密依赖关系它进入 Text()SMethod() 将成为接口(interface)的(非静态)成员。在生产中,您将注入(inject) ActualB,其中 ActualB::SMethod() 调用 static B::SMethod()。在测试中,您将使用根据测试需要定制的 MockB::SMethod()

关于c++ - GMOCK - 模拟一个对象及其内部模拟方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45999642/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com