Module: RSpec::Core::MemoizedHelpers

Included in:
ExampleGroup
Defined in:
lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/memoized_helpers.rb

Overview

This module is included in ExampleGroup, making the methods available to be called from within example blocks.

See Also:

Defined Under Namespace

Modules: ClassMethods Classes: ContextHookMemoized, NonThreadSafeMemoized, ThreadsafeMemoized

Instance Method Summary collapse

Instance Method Details

#is_expectedObject

Note:

This only works if you are using rspec-expectations.

Wraps the ‘subject` in `expect` to make it the target of an expectation. Designed to read nicely for one-liners.

Examples:


describe [1, 2, 3] do
  it { is_expected.to be_an Array }
  it { is_expected.not_to include 4 }
end

See Also:



120
121
122
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/memoized_helpers.rb', line 120

def is_expected
  expect(subject)
end

#should(matcher = nil, message = nil) ⇒ Object

Note:

This only works if you are using rspec-expectations.

Note:

If you are using RSpec’s newer expect-based syntax you may want to use ‘is_expected.to` instead of `should`.

When ‘should` is called with no explicit receiver, the call is delegated to the object returned by `subject`. Combined with an implicit subject this supports very concise expressions.

Examples:


RSpec.describe Person do
  it { should be_eligible_to_vote }
end

See Also:



80
81
82
83
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/memoized_helpers.rb', line 80

def should(matcher=nil, message=nil)
  enforce_value_expectation(matcher, 'should')
  RSpec::Expectations::PositiveExpectationHandler.handle_matcher(subject, matcher, message)
end

#should_not(matcher = nil, message = nil) ⇒ Object

Note:

This only works if you are using rspec-expectations.

Note:

If you are using RSpec’s newer expect-based syntax you may want to use ‘is_expected.to_not` instead of `should_not`.

Just like ‘should`, `should_not` delegates to the subject (implicit or explicit) of the example group.

Examples:


RSpec.describe Person do
  it { should_not be_eligible_to_vote }
end

See Also:



100
101
102
103
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/memoized_helpers.rb', line 100

def should_not(matcher=nil, message=nil)
  enforce_value_expectation(matcher, 'should_not')
  RSpec::Expectations::NegativeExpectationHandler.handle_matcher(subject, matcher, message)
end

#subjectObject

Note:

‘subject` was contributed by Joe Ferris to support the one-liner syntax embraced by shoulda matchers:

RSpec.describe Widget do
  it { is_expected.to validate_presence_of(:name) }
  # or
  it { should validate_presence_of(:name) }
end

While the examples below demonstrate how to use ‘subject` explicitly in examples, we recommend that you define a method with an intention revealing name instead.

Note:

Because ‘subject` is designed to create state that is reset between each example, and `before(:context)` is designed to setup state that is shared across all examples in an example group, `subject` is not intended to be used in a `before(:context)` hook.

Examples:


# Explicit declaration of subject.
RSpec.describe Person do
  subject { Person.new(:birthdate => 19.years.ago) }
  it "should be eligible to vote" do
    subject.should be_eligible_to_vote
    # ^ ^ explicit reference to subject not recommended
  end
end

# Implicit subject => { Person.new }.
RSpec.describe Person do
  it "should be eligible to vote" do
    subject.should be_eligible_to_vote
    # ^ ^ explicit reference to subject not recommended
  end
end

# One-liner syntax - expectation is set on the subject.
RSpec.describe Person do
  it { is_expected.to be_eligible_to_vote }
  # or
  it { should be_eligible_to_vote }
end

See Also:



57
58
59
60
61
62
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/memoized_helpers.rb', line 57

def subject
  __memoized.fetch_or_store(:subject) do
    described = described_class || self.class..fetch(:description_args).first
    Class === described ? described.new : described
  end
end