Your specs here rely extensively on mocking.  I'd prefer it do minimal (if any) mocking, for a couple reasons:

* Mocking the object-under-test is a code smell.
* These specs are tightly coupled to the implementation (e.g. the private helper methods that it calls), which will make future refactoring more difficult.
* These specs give me confidence that particular methods are being called based on the config, but it doesn't give me confidence that it's actually achieving the desired behavior.  The cuke helps provide that level of coverage but we don't often run the cukes locally (as they are so much slower) so we like to keep the specs integrating enough to give us confidence things are working.

Here's an example of how you could test this w/o mocking:

``` ruby
it "stops exposing the DSL methods globally" do
  mod = Module.new
  config.expose_dsl_globally = true
  expect {
    config. disable_monkey_patching!
  }.to change { mod.respond_to?(:describe) }.from(true).to(false)
end
```

For the specs that show that it works properly when rspec-expectations or rspec-mocks are not loaded, you can use `hide_const("RSpec::Mocks")` (or `hide_const("RSpec::Expectations")`) to make it simulate those libraries not being loaded.