Ваши индивидуальные тесты на объекте пользователя должны быть похожи на это:
it "should have an email attribute" do
@attr.should respond_to(:email) }
end
Однако, если вы тестируете класс, могу ли я предложить что-то еще для этого теста:
before (:each) do
@attr = {name: "One", email: "onetwo@three.com"}
end
Тогда ваш первый тест гарантирует, что создание работает следующим образом:
it "should create a new instance given valid attributes" do
Employee.create!(@attr)
end
Как только вы установили, что это работает, вы можете продолжить другие ваши тесты и автоматически создать сотрудника.например, так:
describe "Attributes and method tests" do
before (:each) do
@employee = Employee.create(@attr)
end
it "should have a name attribute" do
@employee.should respond_to(:name)
end
it "should have an email attribute" do
@employee.should respond_to(:email) }
end
# etc... (to test other attributes or methods)
end
Чтобы ответить на ваш вопрос о реверсии теста и указании, что он недействителен, если атрибуты не заполнены, я бы попробовал что-то подобное.Эти тесты были бы хороши, если бы у вас были проверки на наличие:
it "should not be valid with a blank email" do
Employee.new(@attr.merge(:email => '').should_not be_valid
end
it "should not be valid with a blank name" do
Employee.new(@attr.merge(:name => '').should_not be_valid
end