Rails 3.1, RSpec: тестирование моделей валидации
Я начал свой путь с TDD в Rails и столкнулся с небольшой проблемой, касающейся тестов для проверки моделей, которые, похоже, не могут найти решения. Допустим, у меня есть модель пользователя,
class User < ActiveRecord::Base
validates :username, :presence => true
end
и простой тест
it "should require a username" do
User.new(:username => "").should_not be_valid
end
Это правильно проверяет проверку присутствия, но что, если я хочу быть более конкретным? Например, тестирование full_messages на объекте ошибок.
it "should require a username" do
user = User.create(:username => "")
user.errors[:username].should ~= /can't be blank/
end
Моя обеспокоенность по поводу первоначальной попытки (с использованием should_not be_valid) заключается в том, что RSpec не выдаст описательное сообщение об ошибке. Он просто говорит: «Ожидается ли верный? Вернуть ложь, получил истину». Однако у второго тестового примера есть небольшой недостаток: он использует метод create вместо нового, чтобы получить объект ошибок.
Я хотел бы, чтобы мои тесты были более конкретными о том, что они тестируют, но в то же время не должны касаться базы данных.
Кто-нибудь есть какой-либо вклад?