小编Eug*_*acu的帖子

如何使用 gmock 匹配 C++ 元组中的一个元素?

如何使用 gmock 匹配 C++ 元组中的一个元素?

例如,让我们尝试std::string从 中提取std::tuple<std::string, int>

我知道我可以编写一个像这样的自定义匹配器:

MATCHER_P(match0thOfTuple, expected, "") { return (std::get<0>(arg) == expected); }
Run Code Online (Sandbox Code Playgroud)

但既然我找到了Pair(m1, m2)的匹配器std::pair,我期望也能找到类似的东西std::tuple

Gmock 用于Args<N1, N2, ..., Nk>(m)选择元组参数的子集。当仅使用 1 个参数时,它仍然需要一个元组匹配器。以下尝试似乎无法编译:

struct {
  MOCK_METHOD1(mockedFunction, void(std::tuple<std::string, int>&));
} mock;
EXPECT_CALL(mock, mockedFunction(testing::Args<0>(testing::Eq(expectedStringValue))));
Run Code Online (Sandbox Code Playgroud)

并使我的 clang 给出如下编译错误:

.../gtest/googlemock/include/gmock/gmock-matchers.h:204:60: error: invalid operands to binary expression ('const std::__1::tuple<std::__1::basic_string<char> >' and 'const std::__1::basic_string<char>')
  bool operator()(const A& a, const B& b) const { return a == b; }
...
Run Code Online (Sandbox Code Playgroud)

是否有 …

c++ googletest googlemock

5
推荐指数
1
解决办法
2278
查看次数

标签 统计

c++ ×1

googlemock ×1

googletest ×1