【问题标题】:Can I use EXPECT_CALL to verify if the mock object's constructor calls a member function certain times?我可以使用 EXPECT_CALL 来验证模拟对象的构造函数是否在特定时间调用成员函数?
【发布时间】:2019-11-21 13:43:44
【问题描述】:

我有一个类,它的构造函数调用一个成员函数,该成员函数又调用其他成员函数。我想使用 GMock 创建一个模拟类并验证,当构造一个模拟类对象时,这些成员函数在构造过程中每个都被调用一次。但我观察到以下两难境地:

  • 一方面,根据 GMock 的 Dummy doc,“Google Mock 要求在调用模拟函数之前设置期望值,否则行为未定义。”所以你必须在对象的构造函数执行之前调用EXPECT_CALL()。

  • 另一方面,EXPECT_CALL() 需要一个对象作为其第一个参数,因此我们必须先构造该对象,然后才能设置期望值。

上述观察是否正确,如果正确,是否还有办法实现我希望做的事情?

【问题讨论】:

    标签: c++ googletest gmock


    【解决方案1】:

    听起来你最终要测试你班级的 Mock,但这不是很有帮助。默认情况下,模拟构造函数不会调用成员函数,因此您的 EXPECT_CALL() 需要与强制 Mock 进行这些函数调用配对。将代码的行为放入自动化测试工具中并不是一个有用的情况。

    您是否可以创建对象并在公共接口上使用EXPECT 调用来验证构造函数是否已将对象置于正确状态,而不是尝试测试您的类的实现细节?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-16
      • 2022-01-23
      • 2015-12-11
      相关资源
      最近更新 更多