сбой компиляции для gmock wait_call для функции, которая принимает лямбду в качестве аргумента - PullRequest
0 голосов
/ 12 июня 2019

Я пишу юнит-тесты для своего класса, используя gtest / gmock. Компиляция кода модульного теста не удалась.

фиктивная декларация

MOCK_METHOD2(GetFilesFromDirectory, std::shared_ptr<std::list<WIN32_FIND_DATAW>>(const std::wstring &directory, std::function<bool(const WIN32_FIND_DATAW &)> filter));

Затем я пишу EXPECT_CALL для этого метода в тестовом примере другого метода, как показано ниже, и компиляция не удалась.

std::function<bool(const WIN32_FIND_DATAW &)> filesFilter = [](const WIN32_FIND_DATAW &fileData) -> bool {
    return true;
};

EXPECT_CALL(*mock, GetFilesFromDirectory(std::wstring(L"testDirectory"), filesFilter)).WillOnce(Return(fileListPtr));

Я получаю ошибку

Ошибка C2678 двоичная '==': не найден оператор, который принимает левый операнд типа 'const std :: function' (или нет приемлемого преобразования)

Я хотел бы знать, почему возникает эта ошибка и как я могу это исправить.

...