如何声明匹配器数组

时间:2013-11-13 17:29:06

标签: c++ googlemock

我想检查一长串匹配器的字符串向量。对于短序列,我可以这样做:

std::vector<std::string> results = SomeCall();
ExpectThat (results, ElementsAre(IsDelay(7), "read", IsDelay(5), "write"));

(其中IsDelay是我自己的自定义匹配器)。

ElementsAre最多只能使用10个元素。如果我想查看更长的序列,我可以使用ElementsAreArray,但是我将所期望的数组声明为什么?例如,如果我尝试这样做:

XXX expected[] = {IsDelay(7), "read", IsDelay(5), "write")};
ExpectThat (results, ElementsAreArray (expected));

XXX应该是什么?

我在C ++ 11模式下使用gcc 4.8.1,使用gmock 1.5.0。

1 个答案:

答案 0 :(得分:0)

类型应为::testing::Matcher<std::string>,所以:

::testing::Matcher<std::string> expected[] = {IsDelay(7), "read",
                                              IsDelay(5), "write"};

请参阅文档中的Matching Containers部分,特别是示例:

// Or, an array of element matchers.
Matcher<int> expected_vector2 = { 1, Gt(2), _, 3, ... };
EXPECT_CALL(mock, Foo(ElementsAreArray(expected_vector2)));