Skip to content

Add `RSpec::Core::MemoizedHelpers.will_be_expected`

Created by: d-unseductable

Create an alias RSpec::Core::MemoizedHelpers.will_be_expected to expect { subject }

Designed to prettify one-liners when you have block expectations for subject, e.g.

class SimplePrinter
  def initialize
    print "Printer is ready"
  end
end

This goes to

it { will_be_expected.to output("Printer is ready").to_stdout }

instead of

specify { expect { subject }.to output("Printer is ready").to_stdout }

For more complicated cases:

describe UserFactory do
  subject { UserFactory.create_user }

  it { will_be_expected.to change(User.count).by(1) }
  it { will_be_expected.to output.to_stdout }

  context 'with database issues' do
    it { will_be_expected.to output.to_stderr }
    it { will_be_expected.to raise_error }
  end
end

So this change allows to DRY up, prettify and make specs even more readable.

Do you have any suggestions?

Merge request reports