Я начал свое путешествие с TDD в Rails и столкнулся с небольшой проблемой, касающейся тестов для проверки модели, которые я, похоже, не могу найти. Скажем, у меня есть модель User,
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 не выдаст описательного сообщения об ошибке. Он просто говорит: "Ожидаемый допустимый?", Чтобы вернуть false, получил истинное значение ". Однако второй тестовый пример имеет незначительный недостаток: он использует метод create вместо нового метода для доступа к объекту ошибок.
Я бы хотел, чтобы мои тесты были более конкретными в отношении того, что они тестируют, но в то же время не нужно касаться базы данных.
У кого-нибудь есть вход?