2018-11-09 18:20:30 +00:00
|
|
|
# Example that invokes a closure when it is run.
|
|
|
|
# This is useful for capturing what's going on when an event is running.
|
|
|
|
class SpyExample < Spectator::RunnableExample
|
|
|
|
# Dummy description.
|
|
|
|
def what
|
|
|
|
"SPY"
|
|
|
|
end
|
|
|
|
|
2019-01-02 00:06:24 +00:00
|
|
|
# Dummy instance.
|
|
|
|
def instance
|
|
|
|
nil
|
|
|
|
end
|
|
|
|
|
2018-11-09 18:20:30 +00:00
|
|
|
# Captures the sample values when the example is created.
|
|
|
|
def initialize(group, @sample_values)
|
|
|
|
super(group, @sample_values)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Sample values given to the example.
|
|
|
|
getter sample_values : Spectator::Internals::SampleValues
|
|
|
|
|
2018-11-14 19:58:32 +00:00
|
|
|
# Harness that was used while running the example.
|
|
|
|
getter! harness : Spectator::Internals::Harness
|
|
|
|
|
2018-11-09 18:20:30 +00:00
|
|
|
setter block : Proc(Nil)? = nil
|
|
|
|
|
|
|
|
# Method called by the framework to run the example code.
|
|
|
|
private def run_instance
|
2018-11-14 19:58:32 +00:00
|
|
|
@harness = Spectator::Internals::Harness.current
|
2018-11-09 18:20:30 +00:00
|
|
|
if block = @block
|
|
|
|
block.call
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
# Creates a spy example.
|
|
|
|
# The block passed to this method will be executed when the example runs.
|
2019-01-11 17:09:40 +00:00
|
|
|
def self.create(hooks = Spectator::ExampleHooks.empty, conditions = Spectator::ExampleConditions.empty, &block)
|
|
|
|
group = Spectator::RootExampleGroup.new(hooks, conditions)
|
2018-11-09 18:20:30 +00:00
|
|
|
values = Spectator::Internals::SampleValues.empty
|
|
|
|
new(group, values).tap do |example|
|
|
|
|
group.children = [example.as(Spectator::ExampleComponent)]
|
|
|
|
example.block = block
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|