On Sep 23, 2008, at 11:49 AM, Pat Maddox wrote:

Matt Wynne <[EMAIL PROTECTED]> writes:

So we've got a pretty decent number of specs now, and despite my best efforts, AR is just forcing us down the path of having to use database interaction for
some of the model specs.

It's starting to get tiring to run all the specs now, which is making me sad, and making me worry about how things are going to be in a few months from now.

I'd like to somehow be able to systematically mark the slow example groups as being 'impure' and thus be able to choose to mostly ignore them during my
regular TDD cycle, just running them every so often as a regression.

I'm thinking something like this:

describe "when there are ten users in the database", :slow => true do

What do you think? How are other people solving this problem? Any tips /
thoughts on how I could implement this?

Why don't you put the specs in a different directory?  One layout that
I've seen used (I think by the WePlay guys) is:

spec/
 integration/
   controllers/
   models/
 unit/
   controllers/
   models/

Yeah - Bryan and I paired @ Eastmedia before he left for WePlay to develop the following monkey patch to support that:

module Spec
  module Example
    class ExampleGroupFactory
      # Used to support spec/unit and spec/integration
      def self.determine_superclass(opts)
        spec_path = opts[:spec_path].to_s.gsub("/spec/unit", "/spec")

        id = if opts[:type]
          opts[:type]
        elsif spec_path =~ /spec\/integration\/routing_spec/
          :controller
        elsif spec_path =~ /spec\/integration/
          :model
elsif spec_path =~ /spec(\\|\/)([EMAIL PROTECTED] ('|')})/
          $2 == '' ? nil : $2.to_sym
        end
        get(id)
      end
    end
  end
end

Hopefully someone will find this useful.

Scott

_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to