Googlemock ожидает одинаковые вызовы по порядкуC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Googlemock ожидает одинаковые вызовы по порядку

Сообщение Anonymous »

Это моя установка

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

TEST_F(at_operator_selection_tests, select_operators_selects_operator_with_best_signal)
{
// arrange
InSequence s;

// The next expectation will be referred to as exp#1
EXPECT_CALL(_at_protocol_mock, select_operator(_,_)).WillOnce(Return(true));
// Some other expectations left out intentionally here

// The next expectation will be referred to as exp#2
EXPECT_CALL(_at_protocol_mock, select_operator(_,_)).WillOnce(Return(true));
// Some other expectations left out intentionally here

_at_protocol_mock.select_operator(some_var, another_var); // will use exp#2
_at_protocol_mock.select_operator(some_var, another_var); // will use exp#2, which is already saturated
}
Прочитав этот ответ, я теперь понимаю, что одни и те же ожидания будут фиксироваться и просматриваться в обратном порядке. Следовательно, exp#1 никогда не будет использоваться, а exp#2 будет перенасыщен.
Я мог бы изменить свой код следующим образом

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

TEST_F(at_operator_selection_tests, select_operators_selects_operator_with_best_signal)
{
// arrange
InSequence s;

// The next expectation will be referred to as exp#1
EXPECT_CALL(_at_protocol_mock, select_operator(_,_)).Times(2).WillOnce(Return(true));
// Some other expectations left out intentionally here

_at_protocol_mock.select_operator(some_var, another_var); // will use exp#1
_at_protocol_mock.select_operator(some_var, another_var); // will also use exp#1, which is now expected
}
Это работает, но выглядит странно, поскольку ожиданий больше, и я хочу прояснить, что ожидание select_operator используется дважды в контексте.
Это работает, но выглядит странно, поскольку ожиданий больше, и я хочу, чтобы было ясно, что ожидание select_operator используется дважды в контексте.
Это работает, но выглядит странно, поскольку ожиданий больше, и я хочу, чтобы было ясно, что ожидание select_operator используется дважды в контексте.
p>
В ответе выше предлагается использовать функцию InSequence(s) следующим образом

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

TEST_F(at_operator_selection_tests, select_operators_selects_operator_with_best_signal)
{
// arrange
InSequence s;

// The next expectation will be referred to as exp#1
EXPECT_CALL(_at_protocol_mock, select_operator(_,_)).Times(1).WillOnce(Return(true)).InSequence(s); // Compile error!!
// Some other expectations left out intentionally here

// The next expectation will be referred to as exp#1
EXPECT_CALL(_at_protocol_mock, select_operator(_,_)).Times(1).WillOnce(Return(true)).InSequence(s);
// Some other expectations left out intentionally here

_at_protocol_mock.select_operator(some_var, another_var);
_at_protocol_mock.select_operator(some_var, another_var);
}
Но это выдает ошибку компиляции, которую я не могу понять. Я просто понятия не имею, что он пытается мне здесь сказать

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

/home/bp/dev/iobox/firmware/unit_tests/source/valinso/modules/at/operator_selection_tests.cpp:216:104: error: no matching function for call to ‘testing::internal::TypedExpectation::InSequence(testing::InSequence&)’
216 |         EXPECT_CALL(_at_protocol_mock, select_operator(_,_)).Times(1).WillOnce(Return(true)).InSequence(s);
Как мне добиться того, чего я хочу? Я хочу ожидать одного и того же вызова несколько раз подряд. Я хочу, чтобы googlemock последовательно использовал эти ожидания: один раз он использовал exp#2, а второй раз - exp#1.
И мне бы хотелось понять, что говорит компилятор, почему он не может скомпилировать вызов функции .InSequence(s)?

Подробнее здесь: https://stackoverflow.com/questions/735 ... s-in-order
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Googletest (gtest) / googlemock (gmock): почему «Interleav [ing]` wearm_call () `s и вызовы к макетным функциям« неопред
    Anonymous » » в форуме C++
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Как заказать по нескольким столбцам в Spring Data JPA запрос с расчетом по порядку по порядку?
    Anonymous » » в форуме JAVA
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Как издеваться над системным вызовом в модельном тестировании C ++ во время выполнения с помощью Googlemock?
    Anonymous » » в форуме C++
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Как использовать Googlemock в Visual Studio?
    Anonymous » » в форуме C++
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • Сортировка значений по порядку с помощью Python Pandas
    Anonymous » » в форуме Python
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous

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