Я использую гугл макет. В документе говорится, что мы можем использовать EXPECT_THAT в EXPECT_CALL или ON_CALL, но подобный код, похоже, не компилируется:
EXPECT_CALL(obj, method(_, _)).Times(1).WillOnce(EXPECT_THAT(true, Eq(1)));
Я знаю, что EXPECT_THAT — это макрос, поэтому он расширяется до некоторых операторов, которые там не должны появляться. Так что же означает «использовать EXPECT_THAT в EXPECT_CALL»? Как это сделать?
Спасибо
Вы неправильно поняли документация для спичек:
Сопоставитель соответствует одному аргументу. Вы можете использовать его внутри ON_CALL () или EXPECT_CALL (), или использовать его для прямой проверки значения
Затем документы приводятся в качестве примера как Вы можете использовать совпадение для проверки значения:
EXPECT_THAT(value, matcher)
Утверждает, чтоvalue
Матчиmatcher
,
Это не значит, что EXPECT_THAT
это само по себе совпадение. Таким образом, вы не можете делать то, что вы пытаетесь, но только что-то вроде:
EXPECT_THAT(true, testing::Eq(1));
или же
EXPECT_CALL(obj, method(testing::_, testing::Eq(1))).Times(1);
Других решений пока нет …