【问题标题】:How can I change a static method behavior in C++?如何更改 C++ 中的静态方法行为?
【发布时间】:2019-05-27 06:37:08
【问题描述】:

有没有办法修改静态方法的行为以返回不同的参数?

我正在使用 Gmock 进行模拟,但在这种情况下,我无法更改我的代码并且方法必须保持静态

例如

class MyClass
{
public:
    static int GetSomething()
    {
        return -1; 
    }
};

我需要返回正数的方法

【问题讨论】:

    标签: c++ unit-testing mocking


    【解决方案1】:

    在这种情况下,您的选择是有限的,但如果它只是为了模拟,那么只需让该方法返回一个静态变量而不是硬编码值。

    class MyClass
    {
      static int somethingValue;
    public:
      static int GetSomething()
      {
        return somethingValue; 
      }
      static void SetSomething(int value)
      {
        somethingValue = value; 
      }
    };
    int MyClass::somethingValue = -1;
    

    【讨论】:

      【解决方案2】:

      免责声明 - 我在 Typemock 单元测试公司工作。 您可以使用我们的 API 轻松更改方法的行为,例如:

      WHEN_CALLED(MyClass::GetSomething()).Return(15);
      

      这样,在您的所有测试中,GetSomehting 将返回 15。 它也适用于非静态方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多