My concern was to avoid having changes ripple. If the message in the yml changes, then you need to find and update all tests that have copied the string (which should be highlighted by failing tests before you push, m'kay). Using I18n is a little whitebox, but I'm happy with that approach; feels like the coupling is a little lower.