
RSpec Sorbet

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:: 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