Я бы подошел к этому так:
describe "#check_for_initial_company_admin_role" do
it "sets the first user created to be the administrator" do
company = Factory(:company)
user = Factory(:user)
company.users << user
user.roles.count.should > 0
user.roles.should include Role.find_by_name("company_admin")
end
end
Здесь может быть неверное предположение, что вы используете Factory Girl в своей тестовой среде.Если нет, то это на самом деле не меняет «мясо» этого теста ... только те первые строки, где вы создаете компанию и пользователя.
Вы также можете при желании проверить пользователя со стороны компании.но, честно говоря, это похоже на совершенно другой тест - один тестирует связь между этими моделями.
Подход, который я выбрал бы, заключается в том, что, поскольку это на самом деле тест модели, вам нужно создавать и изменять объекты реальной модели,вместо того, чтобы издеваться над этими объектами.Если бы это был тест контроллера, я бы издевался над моделями и настойчиво заглушал модели.
Надеюсь, это поможет и поможет решить ваш вопрос.Если нет, дайте мне знать, где я нахожусь за пределами базы, и я сделаю еще один проход :) Я только около года на rspec, но я обнаружил, что, как только я обернулся, как тестировать модели противконтроллеры я полюбил это.