simple_mock 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,9 @@
1
+ # Changelog
2
+
3
+ ## 0.0.2 / 2012-10-25
4
+
5
+ * Forward mocked object's class to delegator (@coop)
6
+
7
+ ## 0.0.1 / 2012-02-19
8
+
9
+ * Initial release
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![Build Status](https://secure.travis-ci.org/tatey/simple_mock.png?branch=master)](http://travis-ci.org/tatey/simple_mock)
4
4
 
5
- A fast, tiny (81 lines) hybrid mocking library. Mix classical mocking with real objects. There's no monkey patching `Object` or copying. Real objects are completely untainted. The interface is 100% compatible with [MiniTest::Mock](https://github.com/seattlerb/minitest) so there is nothing new to learn. SimpleMock's one and only dependancy is Ruby 1.9.2 or greater.
5
+ A fast, tiny (82 lines) hybrid mocking library that supports classical and partial mocking. Partial mocking mixes classical mocking with real objects. There's no monkey patching `Object` or copying. Mock objects are isolated leaving real objects completely untainted. Plays nicely with MiniTest and [RSpec](http://rspec.info/). The interface is 100% compatible with [MiniTest::Mock](https://github.com/seattlerb/minitest) so there is nothing new to learn. SimpleMock's one and only dependancy is Ruby 1.9.2 or greater.
6
6
 
7
7
  ## Installation
8
8
 
@@ -29,7 +29,7 @@ mock_model.valid? # => true
29
29
  mock_model.verify # => true
30
30
  ```
31
31
 
32
- ### Hybrid Mocking
32
+ ### Partial Mocking
33
33
 
34
34
  Pass an object to mix expectations with the real object's original behaviour.
35
35
 
@@ -40,6 +40,8 @@ end
40
40
 
41
41
  real_model = Post.new
42
42
  mock_model = SimpleMock.new real_model
43
+ mock_model.class # => Post
44
+
43
45
  mock_model.expect :valid?, true
44
46
 
45
47
  mock_model.valid? # => true
@@ -55,10 +57,21 @@ mock_model.valid # => true
55
57
  real_model.valid? # => false
56
58
 
57
59
  real_model.object_id == mock_model.__getobj__.object_id # => true
60
+ real_model.object_id != mock_model.object_id # => true
58
61
  ```
59
62
 
60
63
  More documentation is available at [rubydoc.info](http://rubydoc.info/gems/simple_mock/frames).
61
64
 
65
+ ## Performance
66
+
67
+ SimpleMock is fast. In [this benchmark](https://gist.github.com/1871840) we create an array, set an expectation and call that method 10,000 times.
68
+
69
+ ``` plain
70
+ user system total real
71
+ mocha: 0.000000 0.000000 0.000000 (0.000279)
72
+ simple_mock: 0.000000 0.000000 0.000000 (0.000057)
73
+ ```
74
+
62
75
  ## Caveats
63
76
 
64
77
  Like MiniTest::Mock, `#expect` and `#verify` are reserved methods. Expectations should not be defined on real objects which implement these methods. As an alternative, consider creating an anonymous class which inherits from SimpleDelegator.
@@ -4,6 +4,7 @@ module SimpleMock
4
4
 
5
5
  attr_accessor :__tracer
6
6
  delegate :verify => :__tracer
7
+ delegate :class => :__getobj__
7
8
 
8
9
  def initialize object
9
10
  super
@@ -1,3 +1,3 @@
1
1
  module SimpleMock
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.2'
3
3
  end
@@ -9,7 +9,7 @@ Gem::Specification.new do |s|
9
9
  s.email = ["tate@tatey.com"]
10
10
  s.homepage = 'https://github.com/tatey/simple_mock'
11
11
  s.summary = %q{A fast, tiny hybrid mocking library.}
12
- s.description = %q{A fast, tiny hybrid mocking library. Mix classical mocking with real objects. There's no monkey patching `Object` or copying objects. Real objects are completely untainted.}
12
+ s.description = %q{A fast, tiny (82 lines) hybrid mocking library that supports classical and partial mocking. Partial mocking mixes classical mocking with real objects. There's no monkey patching `Object` or copying. Mock objects are isolated leaving real objects completely untainted.}
13
13
 
14
14
  s.rubyforge_project = "simple_mock"
15
15
 
@@ -59,4 +59,11 @@ class MockDelegatorTest < MiniTest::Unit::TestCase
59
59
  delegator.plus_one
60
60
  assert tracer.verify
61
61
  end
62
+
63
+ def test_class_is_mocked_class
64
+ klass = Class.new
65
+ delegator = MockDelegator.new klass.new
66
+
67
+ assert_equal klass.new.class, delegator.class
68
+ end
62
69
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_mock
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-19 00:00:00.000000000Z
12
+ date: 2012-10-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &70324357134640 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,16 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70324357134640
25
- description: A fast, tiny hybrid mocking library. Mix classical mocking with real
26
- objects. There's no monkey patching `Object` or copying objects. Real objects are
27
- completely untainted.
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ description: A fast, tiny (82 lines) hybrid mocking library that supports classical
31
+ and partial mocking. Partial mocking mixes classical mocking with real objects.
32
+ There's no monkey patching `Object` or copying. Mock objects are isolated leaving
33
+ real objects completely untainted.
28
34
  email:
29
35
  - tate@tatey.com
30
36
  executables: []
@@ -33,6 +39,7 @@ extra_rdoc_files: []
33
39
  files:
34
40
  - .gitignore
35
41
  - .travis.yml
42
+ - CHANGELOG.md
36
43
  - Gemfile
37
44
  - LICENSE
38
45
  - README.md
@@ -66,10 +73,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
66
73
  version: '0'
67
74
  segments:
68
75
  - 0
69
- hash: -790596087642070463
76
+ hash: -3628456372320224322
70
77
  requirements: []
71
78
  rubyforge_project: simple_mock
72
- rubygems_version: 1.8.10
79
+ rubygems_version: 1.8.23
73
80
  signing_key:
74
81
  specification_version: 3
75
82
  summary: A fast, tiny hybrid mocking library.