Сделайте One One_call не последующимC++

Программы на C++. Форум разработчиков
Anonymous
Сделайте One One_call не последующим

Сообщение Anonymous »

У меня есть набор вызовов, которые я хочу проверить в порядке, но они могут быть произвольно перемежаются с вызовом в метод журнала . Как я могу сказать Gmock, что этот конкретный метод можно назвать любым количеством раз? Тест имеет гораздо больше ожидаемого_CALL s, многие из которых установлены в множественных методах помощников, которые я не могу легко изменить. Ни один из них не повторяет weals_call (mock, log) ... между любыми другими ожиданиями. Я пытаюсь переопределить один из них с помощью последующей (...) вызов.

Код: Выделить всё

#include 
#include 

class my_mock {
public:
MOCK_METHOD(void, foo, ());
MOCK_METHOD(void, bar, ());
MOCK_METHOD(void, baz, ());
MOCK_METHOD(void, log, ());
};

class my_test : public testing::TestWithParam {};

void test(my_mock& mock, uint32_t mask) {
if (mask & 1) mock.log();
mock.foo();
if (mask & 2) mock.log();
mock.bar();
if (mask & 4) mock.log();
mock.baz();
if (mask & 8) mock.log();
}

TEST_P(my_test, my_test) {
testing::StrictMock mock{};
testing::InSequence seq{};
testing::Sequence unseq{};

EXPECT_CALL(mock, log).Times(testing::AnyNumber()).InSequence(unseq);
EXPECT_CALL(mock, foo).Times(1);
EXPECT_CALL(mock, bar).Times(1);
EXPECT_CALL(mock, baz).Times(1);

test(mock, GetParam());
}

INSTANTIATE_TEST_SUITE_P(
my_test, my_test, testing::Range(0, 16)
);
https://godbolt.org/z/jkj3g6rt6

Подробнее здесь: https://stackoverflow.com/questions/794 ... nsequenced

Вернуться в «C++»