gpt4 book ai didi

c++ - 我可以使用 EXPECT_CALL 来验证模拟对象的构造函数是否在特定时间调用成员函数吗?

转载 作者:行者123 更新时间:2023-11-28 04:14:21 25 4
gpt4 key购买 nike

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

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

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

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

最佳答案

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

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

关于c++ - 我可以使用 EXPECT_CALL 来验证模拟对象的构造函数是否在特定时间调用成员函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56995964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com