2017-09-01 59 views
0

我写一个GMOCK测试用例的一类:GMOCK - 嘲笑对象及其内部模拟方法

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

现在类A的成员方法中的一个具有B类的对象嵌入到它和也指静态成员方法:

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

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

回答

0

除了测试A,您可以测试从它派生的类,我们称之为TestableA。在A使Text()virtual和重写使用模拟的B。另外,请看this question了解更多关于如何用静态方法模拟类的想法。

然而,最好的办法是通过引入一个接口(例如InterfaceB),并将其注入到Text()打破AB之间存在紧密相关性。 SMethod()将成为界面的(非静态)成员。在生产中,您将注入ActualB,其中ActualB::SMethod()称为staticB::SMethod()。在测试中,您会使用MockB::SMethod(),根据测试需求量身定制。