I've found helper methods inside the test class useful for pulling out code repeated between tests. Like this:
class MyTest < TestCase
context "when logged in as an admin" do
setup do
do_login Factory(:user, role: "admin")
end
should "..." do
...@user...
end
end
context "when logged in as an admin" do
setup do
do_login Factory(:user)
end
should "..." do
...@user...
end
end
def do_login(user)
login_as user
@user = user
# lots more setup code here...
end
end