【问题标题】:Hippomocks expect call with class instanceHippomocks 期望调用类实例
【发布时间】:2015-02-08 16:01:47
【问题描述】:

如何使用类实例或结构实例作为“with”部分中的参数之一来设置期望调用?该文档似乎没有显示如何做到这一点。我看到使用简单的参数,如字符串和整数 - 但不是类实例。您通常只是将该参数设置为“_”并完成它吗?

【问题讨论】:

    标签: hippomocks


    【解决方案1】:

    对于相等的可比较实例,您可以传递一个实例并使用它。

    对于不可比较的实例,无法确定参数是否与您在 .With 中输入的内容匹配,因此无法编译。您需要以某种方式使它们具有可比性,以允许 Hippomocks 确定您的调用是否匹配。

    【讨论】:

      【解决方案2】:

      Dascandy 已经解释过了。

      解决方案是提供您自己的比较器实现,例如对于上面的例子:

      inline bool operator==(const MyStruct& lhs, const MyStruct& rhs)
      {
          if ((lhs.a == rhs.a) && (lhs.b == rhs.b))
          {
              return true;
          }
          return false;
      }
      

      这使得编译器关闭并且测试按预期工作:

      TEST(check_CanCompareStructArguments)
      {
          MockRepository mocks;
      
          IStruct* is = mocks.Mock<IStruct>();
          MyStruct ms;
          ms.a = 5;
          ms.b = 7;
      
          mocks.ExpectCall(is, IStruct::A).With(ms);
      
          is->A(ms);
      }
      

      【讨论】:

        猜你喜欢
        • 2019-02-15
        • 1970-01-01
        • 2018-11-22
        • 1970-01-01
        • 2020-01-15
        • 1970-01-01
        • 2021-01-07
        • 2017-12-10
        • 1970-01-01
        相关资源
        最近更新 更多