Module: RSpec::Core::DSL
- Defined in:
- lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/dsl.rb
Overview
DSL defines methods to group examples, most notably ‘describe`, and exposes them as class methods of RSpec. They can also be exposed globally (on `main` and instances of `Module`) through the Configuration option `expose_dsl_globally`.
By default the methods ‘describe`, `context` and `example_group` are exposed. These methods define a named context for one or more examples. The given block is evaluated in the context of a generated subclass of ExampleGroup.
## Examples:
RSpec.describe "something" do
context "when something is a certain way" do
it "does something" do
# example code goes here
end
end
end
Class Attribute Summary collapse
Class Method Summary collapse
- .change_global_dsl(&changes) ⇒ Object
- .example_group_aliases ⇒ Object
- .expose_example_group_alias(name) ⇒ Object
- .expose_example_group_alias_globally(method_name) ⇒ Object
-
.expose_globally! ⇒ Object
private
Adds the describe method to Module and the top level binding.
- .exposed_globally? ⇒ Boolean
-
.remove_globally! ⇒ Object
private
Removes the describe method from Module and the top level binding.
Class Attribute Details
.top_level ⇒ Object
53 54 55 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/dsl.rb', line 53 def top_level @top_level end |
Class Method Details
.change_global_dsl(&changes) ⇒ Object
89 90 91 92 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/dsl.rb', line 89 def self.change_global_dsl(&changes) (class << top_level; self; end).class_exec(&changes) Module.class_exec(&changes) end |
.example_group_aliases ⇒ Object
27 28 29 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/dsl.rb', line 27 def self.example_group_aliases @example_group_aliases ||= [] end |
.expose_example_group_alias(name) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/dsl.rb', line 37 def self.expose_example_group_alias(name) return if example_group_aliases.include?(name) example_group_aliases << name (class << RSpec; self; end).__send__(:define_method, name) do |*args, &example_group_block| group = RSpec::Core::ExampleGroup.__send__(name, *args, &example_group_block) RSpec.world.record(group) group end expose_example_group_alias_globally(name) if exposed_globally? end |
.expose_example_group_alias_globally(method_name) ⇒ Object
81 82 83 84 85 86 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/dsl.rb', line 81 def self.expose_example_group_alias_globally(method_name) change_global_dsl do remove_method(method_name) if method_defined?(method_name) define_method(method_name) { |*a, &b| ::RSpec.__send__(method_name, *a, &b) } end end |
.expose_globally! ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Adds the describe method to Module and the top level binding.
58 59 60 61 62 63 64 65 66 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/dsl.rb', line 58 def self.expose_globally! return if exposed_globally? example_group_aliases.each do |method_name| expose_example_group_alias_globally(method_name) end @exposed_globally = true end |
.exposed_globally? ⇒ Boolean
32 33 34 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/dsl.rb', line 32 def self.exposed_globally? @exposed_globally ||= false end |
.remove_globally! ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Removes the describe method from Module and the top level binding.
70 71 72 73 74 75 76 77 78 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/dsl.rb', line 70 def self.remove_globally! return unless exposed_globally? example_group_aliases.each do |method_name| change_global_dsl { undef_method method_name } end @exposed_globally = false end |