Fix README spec

Mocked types cannot be private.
Moved to a module to prevent polluting the global namespace.
This commit is contained in:
Michael Miller 2022-12-17 21:01:22 -07:00
parent 4b68b8e3de
commit f55c60e01f
No known key found for this signature in database
GPG key ID: 32B47AE8F388A1FF

View file

@ -1,26 +1,28 @@
require "../spec_helper" require "../spec_helper"
private abstract class Interface module Readme
abstract class Interface
abstract def invoke(thing) : String abstract def invoke(thing) : String
end end
# Type being tested. # Type being tested.
private class Driver class Driver
def do_something(interface : Interface, thing) def do_something(interface : Interface, thing)
interface.invoke(thing) interface.invoke(thing)
end end
end
end end
Spectator.describe Driver do Spectator.describe Readme::Driver do
# Define a mock for Interface. # Define a mock for Interface.
mock Interface mock Readme::Interface
# Define a double that the interface will use. # Define a double that the interface will use.
double(:my_double, foo: 42) double(:my_double, foo: 42)
it "does a thing" do it "does a thing" do
# Create an instance of the mock interface. # Create an instance of the mock interface.
interface = mock(Interface) interface = mock(Readme::Interface)
# Indicate that `#invoke` should return "test" when called. # Indicate that `#invoke` should return "test" when called.
allow(interface).to receive(:invoke).and_return("test") allow(interface).to receive(:invoke).and_return("test")