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 вместо нового, чтобы получить объект ошибок.

Я хотел бы, чтобы мои тесты были более конкретными о том, что они тестируют, но в то же время не должны касаться базы данных.

Кто-нибудь есть какой-либо вклад?

Ответы на вопрос(7)

Ваш ответ на вопрос