Rails 3.1, RSpec: testando validações de modelo

Comecei minha jornada com o TDD no Rails e me deparei com um pequeno problema relacionado a testes de validação de modelos para os quais não consigo encontrar uma solução. Digamos que eu tenho um modelo de usuário,

class User < ActiveRecord::Base
  validates :username, :presence => true
end

e um teste simples

it "should require a username" do
  User.new(:username => "").should_not be_valid
end

Isto testa corretamente a validação de presença, mas e se eu quiser ser mais específico? Por exemplo, testando mensagens_ completas no objeto de erros.

it "should require a username" do
  user = User.create(:username => "")
  user.errors[:username].should ~= /can't be blank/
end

Minha preocupação com a tentativa inicial (usando should_not be_valid) é que o RSpec não produzirá uma mensagem de erro descritiva. Simplesmente diz "esperado válido? Retornar falso, se tornou verdadeiro". No entanto, o segundo exemplo de teste tem uma pequena desvantagem: ele usa o método create em vez do novo método para obter o objeto de erro

Gostaria que meus testes fossem mais específicos sobre o que estão testando, mas, ao mesmo tempo, não precisam tocar em um banco de dado

Alguém tem alguma entrada?

questionAnswers(7)

yourAnswerToTheQuestion