Add no_args support for stubs

Fixes https://github.com/icy-arctic-fox/spectator/issues/28
This commit is contained in:
Michael Miller 2021-07-02 18:43:39 -06:00
parent 92f758084d
commit e3f6fb3c7c
No known key found for this signature in database
GPG key ID: FB9F12F7C646A4AD
4 changed files with 48 additions and 0 deletions

View file

@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
- Added support for `with(no_args)` for method stubs. [#28](https://github.com/icy-arctic-fox/spectator/issues/28)
## [0.9.38] - 2021-05-27
### Fixed
- Fix `Channel::ClosedError` when using default Crystal Logger. [#27](https://github.com/icy-arctic-fox/spectator/issues/27)

View file

@ -0,0 +1,19 @@
require "../spec_helper"
Spectator.describe "GitHub Issue #28" do
class Test
def foo
42
end
end
mock Test do
stub foo
end
it "matches method stubs with no_args" do
test = Test.new
expect(test).to receive(:foo).with(no_args).and_return(42)
test.foo
end
end

View file

@ -170,4 +170,8 @@ module Spectator::DSL
{% end %}
%stubs
end
def no_args
::Spectator::Mocks::NoArguments.new
end
end

View file

@ -0,0 +1,21 @@
require "./arguments"
module Spectator::Mocks
class NoArguments < Arguments
def args
Tuple.new
end
def opts
NamedTuple.new
end
def ===(other : Arguments) : Bool
other.args.empty? && other.opts.empty?
end
def ===(other) : Bool
false
end
end
end