Sha256: 339da79015596e4b29d9211506f5b26f2644941d94648d8f8d0d82f4ce6c357d

Contents?: true

Size: 1.47 KB

Versions: 1

Compression:

Stored size: 1.47 KB

Contents

# Ruby Spy [![Build Status](https://travis-ci.org/patbenatar/ruby-spy.svg?branch=master)](https://travis-ci.org/patbenatar/ruby-spy) [![Coverage Status](https://coveralls.io/repos/github/patbenatar/ruby-spy/badge.svg?branch=master)](https://coveralls.io/github/patbenatar/ruby-spy?branch=master)

Test spies for Ruby. Why? For fun.

## Installation

```
gem 'spies', require: 'spy'
```

## Usage

Spy on all methods of an instance:

```ruby
spy = Spy.on(my_object)
spy.some_method
expect(spy.calls.count).to eq 1
expect(spy.calls.last.method_name).to eq :some_method
```

Spy on arguments:

```ruby
spy = Spy.on(my_object)

spy.some_method_with_args('foo', 'bar')
expect(spy.calls.last.args).to eq %w(foo bar)

block = -> {}
spy.some_method_with_block(&block)
expect(spy.calls.last.block).to eq block
```

Spy on one method:

```ruby
spy = Spy.on(my_object, :some_method)
spy.some_method
spy.another_method
expect(spy.calls.count).to eq 1
```

Spy on a constant:

```ruby
spy = Spy.on(SomeClass)
SomeClass.some_method
expect(spy.calls.count).to eq 1
```

Spy on all instances of a class:

```ruby
spy = Spy.on_all_instances_of(SomeClass)

instance_1 = SomeClass.new
instance_1.some_method

instance_2 = SomeClass.new
instance_2.some_method

expect(spy.calls.count).to eq 2
expect(spy.calls[1].receiver).to eq instance_2
```

Clean up after yourself:

```ruby
Spy.clean
```

Or keep a block clean:

```ruby
Spy.clean do
  Spy.on(my_object)
end
```

Cleaning with RSpec:

```ruby
before(:each) { Spy.clean }
```

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
spies-0.1.0 README.md