Index: lib/spec/rails/dsl/behaviour/base.rb =================================================================== --- lib/spec/rails/dsl/behaviour/base.rb (revision 2087) +++ lib/spec/rails/dsl/behaviour/base.rb (working copy) @@ -35,10 +35,16 @@ module ExampleMethods @@model_id = 1000 - # Creates a mock object instance for a +model_class+ with common - # methods stubbed out. - # Additional methods may be easily stubbed (via add_stubs) if +stubs+ is passed. - def mock_model(model_class, stubs = {}) + # Creates a mock instance for a +model_class+ with common methods + # stubbed out. Ancestor classes of +model_class+ may be given as + # additional arguments. + # Additional methods may be easily stubbed (via add_stubs) by passing + # a hash of method/value pairs as the final argument. + # example usage: + # mock = mock_model(Manager, Employee, Person, :method => "value") + def mock_model(model_class, *args) + stubs = args.last.is_a?(Hash) ? args.pop : {} + class_hierarchy = [model_class] + args id = @@model_id @@model_id += 1 m = mock("#{model_class.name}_#{id}") @@ -48,7 +54,7 @@ m.stub!(:errors).and_return(stub("errors", :count => 0)) m.send(:__mock_proxy).instance_eval <<-CODE def @target.is_a?(other) - other == #{model_class} + #{class_hierarchy.inspect}.include?(other) end def @target.class #{model_class}