since you are simply testing if `on_success` or `on_failure` are called, it might be easier to put these callbacks in a `let` block, it will also make the test more readable, e.g.

~~~ruby
let(:callbacks) do
  {
    on_success: ->(e) { 'success' },
    on_failure: ->(e) { 'failed' }
  }
end

...

it 'should display a success message' do
  service.perform({ name: 'event' }, callbacks).should eq 'success'
end
~~~