A small gem consisting of helpers for using Sorbet & RSpec together.
Install
gem 'rspec-sorbet'
Usage
In your spec_helper.rb
you need to first add a require
:
require 'rspec/sorbet'
Allowing Instance/Class/Object Doubles
Out of the box if you're using instance_double
, class_double
or object_double
in your specs you'll encounter errors such as the following:
TypeError:
Parameter 'my_parameter': Expected type MyObject, got type RSpec::Mocks::InstanceVerifyingDouble with value #<InstanceDouble(MyObject) (anonymous)>
Caller: /Users/samuelgiles/Documents/Projects/Clients/Bellroy/bellroy/spec/lib/checkout/use_cases/my_use_case.rb:9
Drop the following into your spec_helper.rb
to allow doubles to be used without breaking type checking:
RSpec::Sorbet.allow_doubles!
eq
matcher usage with T::Struct
's
Using the eq
matcher to compare T::Struct
's might not behave as you'd expect whereby two separate instances of the same struct class with identical attributes are not ==
out of the box. The standalone sorbet-struct-comparable gem may be of interest if you are looking for a simple attribute based comparison that will help make the eq
matcher behave as you expect.
Specifying a custom validation handler
You can customise the handler of Sorbet validation errors if you so desire.
def handler(signature, opts)
raise MyCustomException, "The options were #{opts}"
end
T::Configuration.call_validation_error_handler = handler