Module: RspecInContext::InContext::ClassMethods
- Defined in:
- lib/rspec_in_context/in_context.rb
Overview
This module define the methods that will be available for the end user inside RSpec tests
Instance Method Summary collapse
-
#define_context(context_name, namespace: nil, ns: nil, silent: true, print_context: nil, &block) ⇒ Object
Let you define a context that can be reused later.
-
#execute_tests ⇒ Object
(also: #instanciate_context)
Used in context definition Place where you want to re-inject code passed in argument of in_context.
-
#in_context(context_name, *args, namespace: nil, ns: nil, &block) ⇒ Object
Use a context and inject its content at this place in the code.
Instance Method Details
#define_context(context_name, namespace: nil, ns: nil, silent: true, print_context: nil, &block) ⇒ Object
Note:
contexts are scoped to the block they are defined in.
Let you define a context that can be reused later
114 115 116 117 118 119 120 |
# File 'lib/rspec_in_context/in_context.rb', line 114 def define_context(context_name, namespace: nil, ns: nil, silent: true, print_context: nil, &block) namespace ||= ns silent = print_context.nil? ? silent : !print_context instance_exec do InContext.add_context(context_name, hooks.instance_variable_get(:@owner), namespace, silent, &block) end end |
#execute_tests ⇒ Object Also known as: instanciate_context
Used in context definition Place where you want to re-inject code passed in argument of in_context
For convenience and readability, a ‘instanciate_context` alias have been defined (for more examples look at tests)
98 99 100 |
# File 'lib/rspec_in_context/in_context.rb', line 98 def execute_tests instance_exec(&Thread.current[:test_block]) if Thread.current[:test_block] end |
#in_context(context_name, *args, namespace: nil, ns: nil, &block) ⇒ Object
Use a context and inject its content at this place in the code
84 85 86 87 88 89 90 91 |
# File 'lib/rspec_in_context/in_context.rb', line 84 def in_context(context_name, *args, namespace: nil, ns: nil, &block) namespace ||= ns Thread.current[:test_block] = block context_to_exec = InContext.find_context(context_name, namespace) return context { instance_exec(*args, &context_to_exec.block) } if context_to_exec.silent context(context_name.to_s) { instance_exec(*args, &context_to_exec.block) } end |