/usr/share/doc/ruby-rspec-mocks/features/mutating_constants/stub_undefined_constant.feature is in ruby-rspec-mocks 3.7.0c1e0m0s1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | Feature: Stub Undefined Constant
Use `stub_const` to stub constants. When the constant is not already defined, all the
necessary intermediary modules will be dynamically created. When the example completes,
the intermediary module constants will be removed to return the constant state to how it
started.
Scenario: Stub top-level constant
Given a file named "stub_const_spec.rb" with:
"""ruby
RSpec.describe "stubbing FOO" do
it "can stub undefined constant FOO" do
stub_const("FOO", 5)
expect(FOO).to eq(5)
end
it "undefines the constant when the example completes" do
expect { FOO }.to raise_error(NameError)
end
end
"""
When I run `rspec stub_const_spec.rb`
Then the examples should all pass
Scenario: Stub nested constant
Given a file named "stub_const_spec.rb" with:
"""ruby
module MyGem
class SomeClass
end
end
module MyGem
RSpec.describe SomeClass do
it "can stub an arbitrarily deep constant that is undefined" do
expect(defined?(SomeClass::A)).to be_falsey
stub_const("MyGem::SomeClass::A::B::C", 3)
expect(SomeClass::A::B::C).to eq(3)
expect(SomeClass::A).to be_a(Module)
end
it 'undefines the intermediary constants that were dynamically created' do
expect(defined?(SomeClass)).to be_truthy
expect(defined?(SomeClass::A)).to be_falsey
end
end
end
"""
When I run `rspec stub_const_spec.rb`
Then the examples should all pass
|