在C++中#define mockable virtual

Mir*_*pas 3 c++

我找到了这段代码:

#define mockable virtual

你知道为什么有人会像这样定义虚拟吗?我只是好奇这是做什么的重点

Ark*_*nez 10

这样你就可以做到:

class ClassIdLikeToTest{
    mockable void mymethod(){
         //Behavior I would like to be different in my tests
    }
}
Run Code Online (Sandbox Code Playgroud)

然后将mockable定义为测试构建的虚拟,以便您可以覆盖从该类继承的方法.

你编写测试并使用一个继承自ClassIdLikeToTest的类并覆盖mymethod,只要mockable是虚拟的,它就会工作,但是你可以删除它用于生产构建,那些函数不会是虚拟的,你不付钱用于虚拟呼叫.

  • 所选名称*mockable*也是描述性的.声明为"mockable"的函数可以"模拟"..也就是说,*mock函数*可以在其位置用于测试目的 (3认同)