如何为输入参数匹配 union 中元素的值,例如 - 如果我模拟具有以下签名的方法 -
struct SomeStruct
{
int data1;
int data2;
};
void SomeMethod(SomeStruct data);
我如何才能匹配调用此方法的 mock,并在参数中使用正确的值?
最佳答案
在详细阅读了 Google mock 文档之后,我解决了我在 Defining Matchers 中记录的问题部分。 (一个例子会很棒!)
因此解决方案是使用 MATCHER_P
宏来定义自定义匹配器。所以对于匹配的 SomeStruct.data1
我定义了一个匹配器:
MATCHER_P(data1AreEqual, ,"") { return (arg.data1 == SomeStructToCompare.data1); }
为了符合预期,我使用了这个自定义宏,如下所示:
EXPECT_CALL(someMock, SomeMethod(data1AreEqual(expectedSomeStruct)));
这里,expectedSomeStruct
是我们期望的structure.data1
的值。
请注意,正如其他答案(在这篇文章和其他文章中)所建议的那样,它需要更改被测单元以使其可测试。那应该没有必要!例如。重载。
关于c++ - Gmock - 匹配结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23938233/