C++,google test/mock:断言测试和对象类型

Hug*_*ugo 5 c++ googletest assertions googlemock

我有这个(不是真的,只是一个简单的例子):

template<class T> 
T foo() {...}
Run Code Online (Sandbox Code Playgroud)

我需要检查函数的结果类型(这里没有任何意义,我的例子更复杂,我保证),google test/mock是否支持这种断言?

我用A <T>尝试EXPECT_THAT,但我无法做到这一点.

谢谢.

Rob*_*edy 4

Google Test 用于运行时测试。函数的类型是在编译时确定的,在 Google Test 介入之前。

您可以使用result_of并断言 typeid 值是相同的,如下所示:

EXPECT_EQ(typeid(int), typeid(std::result_of<foo<int>() >::type));
Run Code Online (Sandbox Code Playgroud)

另一种选择是放弃对返回类型的显式测试,而只使用预期使用的函数。如果返回类型有问题,编译器会在您尝试运行测试之前告诉您。无论如何,这可能比要求一种特定的返回类型更好;例如,如果返回类型结果不是long预期的int,但所有其他测试仍然通过,那么int一开始真的那么重要吗?