有没有办法修改静态方法的行为以返回不同的参数?
我正在使用Gmock进行模拟,但是在这种情况下,我无法更改代码,并且方法必须保持静态
例如
class MyClass
{
public:
static int GetSomething()
{
return -1;
}
};
我需要返回正数的方法
答案 0 :(得分:2)
在这种情况下,您的选择是有限的,但是如果仅用于模拟,则只需使该方法返回静态变量而不是硬编码值即可。
class MyClass
{
static int somethingValue;
public:
static int GetSomething()
{
return somethingValue;
}
static void SetSomething(int value)
{
somethingValue = value;
}
};
int MyClass::somethingValue = -1;
答案 1 :(得分:0)
免责声明-我在Typemock的单元测试公司工作。 您可以使用我们的API轻松更改方法的行为,例如:
WHEN_CALLED(MyClass::GetSomething()).Return(15);
这样,在您的所有测试中,GetSomehting
将返回15。
它将同样适用于非静态方法。