mirror of
https://gitea.invidious.io/iv-org/shard-spectator.git
synced 2024-08-15 00:53:35 +00:00
Add spec for doubles docs
This commit is contained in:
parent
1d58824e6c
commit
7dd77a2096
1 changed files with 79 additions and 0 deletions
79
spec/docs/doubles_spec.cr
Normal file
79
spec/docs/doubles_spec.cr
Normal file
|
@ -0,0 +1,79 @@
|
|||
require "../spec_helper"
|
||||
|
||||
# https://gitlab.com/arctic-fox/spectator/-/wikis/Doubles
|
||||
Spectator.describe "Doubles Docs" do
|
||||
let(answer) { 42 }
|
||||
|
||||
double :my_double, answer: 5 do
|
||||
def answer(arg1, arg2)
|
||||
arg1 + arg2
|
||||
end
|
||||
end
|
||||
|
||||
it "does something" do
|
||||
dbl = double(:my_double, answer: answer)
|
||||
expect(dbl.answer).to eq(42)
|
||||
expect(dbl.answer(1, 2)).to eq(3)
|
||||
end
|
||||
|
||||
class Emitter
|
||||
def initialize(@value : Int32)
|
||||
end
|
||||
|
||||
def emit(target)
|
||||
target.call(@value)
|
||||
end
|
||||
end
|
||||
|
||||
context "Expecting Behavior" do
|
||||
describe Emitter do
|
||||
subject { Emitter.new(42) }
|
||||
|
||||
double :target, call: nil
|
||||
|
||||
describe "#emit" do
|
||||
it "invokes #call on the target" do
|
||||
target = double(:target)
|
||||
subject.emit(target)
|
||||
expect(target).to have_received(:call).with(42)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
it "does something" do
|
||||
dbl = double(:my_double)
|
||||
allow(dbl).to receive(:answer).and_return(42) # Merge this line...
|
||||
dbl.answer
|
||||
expect(dbl).to have_received(:answer) # and this line.
|
||||
end
|
||||
|
||||
it "does something" do
|
||||
dbl = double(:my_double)
|
||||
expect(dbl).to receive(:answer).and_return(42)
|
||||
dbl.answer
|
||||
end
|
||||
end
|
||||
|
||||
context "Class Doubles" do
|
||||
double :my_double do
|
||||
# Define class methods with `self.` prefix.
|
||||
stub def self.something
|
||||
42
|
||||
end
|
||||
end
|
||||
|
||||
it "does something" do
|
||||
# Default stubs can be defined with key-value pairs (keyword arguments).
|
||||
dbl = class_double(:my_double, something: 3)
|
||||
expect(dbl.something).to eq(3)
|
||||
|
||||
# Stubs can be changed with `allow`.
|
||||
allow(dbl).to receive(:something).and_return(5)
|
||||
expect(dbl.something).to eq(5)
|
||||
|
||||
# Even the expect-receive syntax works.
|
||||
expect(dbl).to receive(:something).and_return(7)
|
||||
dbl.something
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue