【发布时间】:2019-05-27 06:37:08
【问题描述】:
有没有办法修改静态方法的行为以返回不同的参数?
我正在使用 Gmock 进行模拟,但在这种情况下,我无法更改我的代码并且方法必须保持静态
例如
class MyClass
{
public:
static int GetSomething()
{
return -1;
}
};
我需要返回正数的方法
【问题讨论】:
标签: c++ unit-testing mocking
有没有办法修改静态方法的行为以返回不同的参数?
我正在使用 Gmock 进行模拟,但在这种情况下,我无法更改我的代码并且方法必须保持静态
例如
class MyClass
{
public:
static int GetSomething()
{
return -1;
}
};
我需要返回正数的方法
【问题讨论】:
标签: c++ unit-testing mocking
在这种情况下,您的选择是有限的,但如果它只是为了模拟,那么只需让该方法返回一个静态变量而不是硬编码值。
class MyClass
{
static int somethingValue;
public:
static int GetSomething()
{
return somethingValue;
}
static void SetSomething(int value)
{
somethingValue = value;
}
};
int MyClass::somethingValue = -1;
【讨论】:
免责声明 - 我在 Typemock 单元测试公司工作。 您可以使用我们的 API 轻松更改方法的行为,例如:
WHEN_CALLED(MyClass::GetSomething()).Return(15);
这样,在您的所有测试中,GetSomehting 将返回 15。
它也适用于非静态方法。
【讨论】: