Это зависит от того, что вы пытаетесь проверить.
Если вы проверяете, является ли флэш-текст «Привет», то вы уверены, что знаете, что увидит ваш пользователь.
С другой стороны, проверка того, содержит ли флэш-память то же самое, что и помощник "t", возвращает для данной строки, также имеет смысл иногда - например, когда ваш файл перевода часто изменяется или его содержимое создано кем-то другим Через некоторое время.
Лично я всегда проверяю точный, окончательный перевод (assert_equal "Hello", flash[:message]
такие вещи).
Это заверяет меня, что: 1) перевод звучит нормально, 2) язык правильно распознается (вам не нужны польские сообщения для ваших английских пользователей, не так ли?)
Что касается второй части вашего вопроса:
Может быть, "should_set_the_flash_to I18n.t("sign_up.welcome")
" сработает?