1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-03 15:18:01 +00:00
Files
til/ruby/mock-method-chain-calls-with-rspec.md

32 lines
703 B
Markdown

# Mock Method Chain Calls With RSpec
Generally with RSpec you mock one method call at a time:
```ruby
allow(User).to receive(:new).and_return(true)
```
Sometimes you are dealing with code that involves a chain of method calls.
```ruby
User
.new
.approve
.send_welcome_email
```
If it becomes unreasonable to mock out each individual method, you can instead
mock out the chain of calls.
```ruby
allow(User).to receive_message_chain('new.approve.send_welcome_email')
```
Alternatively, you can write this as:
```ruby
allow(User).to receive_message_chain(:new, :approve, :send_welcome_email)
```
[source](https://relishapp.com/rspec/rspec-mocks/docs/working-with-legacy-code/message-chains)