Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/samuelgiles/rspec-sorbet
A small gem consisting of helpers for using Sorbet & RSpec together.
https://github.com/samuelgiles/rspec-sorbet
rails rspec ruby sorbet testing type-safety types
Last synced: 26 days ago
JSON representation
A small gem consisting of helpers for using Sorbet & RSpec together.
- Host: GitHub
- URL: https://github.com/samuelgiles/rspec-sorbet
- Owner: samuelgiles
- License: mit
- Created: 2019-08-15T14:00:44.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-03-24T08:11:48.000Z (over 1 year ago)
- Last Synced: 2024-10-06T18:45:35.589Z (about 1 month ago)
- Topics: rails, rspec, ruby, sorbet, testing, type-safety, types
- Language: Ruby
- Size: 1.48 MB
- Stars: 38
- Watchers: 1
- Forks: 9
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
Awesome Lists containing this project
README
![rspec-sorbet](https://user-images.githubusercontent.com/2643026/63100456-02c12c00-bf6f-11e9-8430-630a27bc6e42.png)
# RSpec Sorbet [![Gem Version](https://badge.fury.io/rb/rspec-sorbet.svg)](https://badge.fury.io/rb/rspec-sorbet) ![CI Badge](https://github.com/samuelgiles/rspec-sorbet/workflows/Continuous%20Integration/badge.svg)
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`:
```ruby
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:
```ruby
TypeError:
Parameter 'my_parameter': Expected type MyObject, got type RSpec::Mocks::InstanceVerifyingDouble with value #
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:
```ruby
RSpec::Sorbet.allow_doubles!
```### `eq` matcher usage with `T::Struct`'s
Using the [`eq` matcher](https://www.rubydoc.info/github/rspec/rspec-expectations/RSpec%2FMatchers:eq) to compare [`T::Struct`'s](https://sorbet.org/docs/tstruct) 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](https://github.com/samuelgiles/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.
```ruby
def handler(signature, opts)
raise MyCustomException, "The options were #{opts}"
endT::Configuration.call_validation_error_handler = handler
```