0

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

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。

4

1 回答 1

0

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

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

请参阅文档中的匹配容器部分,特别是示例:

// Or, an array of element matchers.
Matcher<int> expected_vector2 = { 1, Gt(2), _, 3, ... };
EXPECT_CALL(mock, Foo(ElementsAreArray(expected_vector2)));
于 2013-11-14T01:54:50.227 回答