Skip to content

barelyknown/rspec-context-private

Repository files navigation

rspec-context-private

Writing Ruby? 👍 Using RSpec? 👍 Feeling naughty? 😱 Want to test some private methods? 😲

# Gemfile
gem 'rspec-context-private'
# example.rb
class Example
  private def foo
    'bar'
  end
end
# example_spec.rb
describe Example do
  describe 'some private methods', :private do
    it 'does not raise an error' do
      expect{subject.foo}.not_to raise_error(NoMethodError)
    end
  end
end

Why would you EVER!? want to test a private method?

If you're using some flavor of TDD, you might want to test some private methods that you develop along the way. Maybe you'll delete them later? Or maybe you're a crazy rebel 😝 and you'll keep the tests around and make your code difficult to refactor and disappoint the Internet!

Whatever your reason - this gem makes it more pleasant to test private methods.

Credits

Written by @barelyknown.

This gem uses RSpec's shared context feature.

The idea for the gem came from this old blog post by Jay Fielder.

About

RSpec shared context to make private methods temporarily public.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages