2016-01-14 6 views
3

Используя Google Test, мне нужен способ проверить, что строка, которая была возвращена моим тестируемым классом, не содержит конкретной строки. В настоящее время я могу проверить, что строка содержит другую строку, используя EXPECT_THAT и MatchesRegex; однако, я не знаю, как создать правильное регулярное выражение POSIX Extended для не содержащего слова, и я не знаю, как отменить вызов MatchesRegex.Google Test - проверьте, что строка не содержит строку

Я попытался сделать регулярное выражение я нашел здесь на SO:

EXPECT_THAT(returnedString, MatchesRegex("^(?!.*badword).*$")); 

, но это дает мне ошибку:

Regular expression "^(?!.*badword).*$" is not a valid POSIX Extended regular expression. 

Любые другие предложения о том, как я могу это сделать?

ответ

5

Вы можете комбинировать matchers HasSubstr и Not так что ваш код будет выглядеть следующим образом:

EXPECT_THAT(returnedString, Not(HasSubstr("badword"))); 

Check Google Mock documentation for matchers для полной ссылки.

+0

Данг, не знаю, как я пропустил это ... помогает RTFM. Благодаря! –

+0

Кажется, нам также нужно использовать 'using :: testing :: HasSubstr;' для этого. благодаря – sage