Сделайте 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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