Because otherwise the test is run global namespace and constants like `Q` inside describe blocks don't work how you'd expect them to (they will clash because defined at the same scope even inside describe block). When tests get more complex and have full blown mock classes, they won't leak outside the scope of the tests. I've generally found this a reasonable solution, e.g. see http://stackoverflow.com/questions/6127639/using-rspec-are-constants-within-describes-a-big-no-no - happy to revert this - it's just what I've found works very well for me personally. `let` blocks, as suggested, aren't suitable for many use-cases, e.g. don't work inside `before`/`after` blocks, etc.