2022-04-02 18:07:39 +00:00
|
|
|
require "../../spec_helper"
|
|
|
|
|
|
|
|
Spectator.describe Spectator::Allow do
|
|
|
|
let(dbl) { Spectator::LazyDouble.new(foo: 42) }
|
|
|
|
let(stub) { Spectator::ValueStub.new(:foo, 123) }
|
|
|
|
subject(alw) { Spectator::Allow.new(dbl) }
|
|
|
|
|
|
|
|
describe "#to" do
|
|
|
|
it "applies a stub" do
|
|
|
|
expect { alw.to(stub) }.to change { dbl.foo }.from(42).to(123)
|
|
|
|
end
|
2022-10-09 21:48:00 +00:00
|
|
|
|
|
|
|
context "leak" do
|
|
|
|
class Thing
|
|
|
|
def foo
|
|
|
|
42
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
mock Thing
|
|
|
|
|
|
|
|
getter(thing : Thing) { mock(Thing) }
|
|
|
|
|
|
|
|
# Workaround type restrictions requiring a constant.
|
|
|
|
def fake
|
|
|
|
class_mock(Thing).cast(thing)
|
|
|
|
end
|
|
|
|
|
|
|
|
specify do
|
|
|
|
expect { allow(fake).to(stub) }.to change { fake.foo }.from(42).to(123)
|
|
|
|
end
|
|
|
|
|
|
|
|
# This example must be run after the previous (random order may break this).
|
|
|
|
it "clears the stub after the example completes" do
|
|
|
|
expect { fake.foo }.to eq(42)
|
|
|
|
end
|
|
|
|
end
|
2022-04-02 18:07:39 +00:00
|
|
|
end
|
|
|
|
end
|