rspec-core 2.0.0.a1
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.
- data/.document +5 -0
- data/.gitignore +7 -0
- data/.treasure_map.rb +23 -0
- data/License.txt +22 -0
- data/README.markdown +9 -0
- data/Rakefile +76 -0
- data/TODO.markdown +16 -0
- data/VERSION +1 -0
- data/VERSION.yml +5 -0
- data/bin/rspec +12 -0
- data/cucumber.yml +2 -0
- data/example_specs/failing/README.txt +7 -0
- data/example_specs/failing/diffing_spec.rb +36 -0
- data/example_specs/failing/failing_implicit_docstrings_example.rb +19 -0
- data/example_specs/failing/failure_in_after.rb +10 -0
- data/example_specs/failing/failure_in_before.rb +10 -0
- data/example_specs/failing/mocking_example.rb +40 -0
- data/example_specs/failing/mocking_with_flexmock.rb +26 -0
- data/example_specs/failing/mocking_with_mocha.rb +25 -0
- data/example_specs/failing/mocking_with_rr.rb +27 -0
- data/example_specs/failing/partial_mock_example.rb +20 -0
- data/example_specs/failing/pending_example.rb +9 -0
- data/example_specs/failing/predicate_example.rb +34 -0
- data/example_specs/failing/raising_example.rb +47 -0
- data/example_specs/failing/spec_helper.rb +3 -0
- data/example_specs/failing/syntax_error_example.rb +7 -0
- data/example_specs/failing/team_spec.rb +44 -0
- data/example_specs/failing/timeout_behaviour.rb +7 -0
- data/example_specs/passing/custom_formatter.rb +12 -0
- data/example_specs/passing/custom_matchers.rb +54 -0
- data/example_specs/passing/dynamic_spec.rb +9 -0
- data/example_specs/passing/file_accessor.rb +19 -0
- data/example_specs/passing/file_accessor_spec.rb +38 -0
- data/example_specs/passing/filtered_formatter.rb +18 -0
- data/example_specs/passing/filtered_formatter_example.rb +31 -0
- data/example_specs/passing/greeter_spec.rb +31 -0
- data/example_specs/passing/helper_method_example.rb +14 -0
- data/example_specs/passing/implicit_docstrings_example.rb +18 -0
- data/example_specs/passing/io_processor.rb +8 -0
- data/example_specs/passing/io_processor_spec.rb +21 -0
- data/example_specs/passing/mocking_example.rb +27 -0
- data/example_specs/passing/multi_threaded_example_group_runner.rb +26 -0
- data/example_specs/passing/nested_classes_example.rb +36 -0
- data/example_specs/passing/options_example.rb +31 -0
- data/example_specs/passing/options_formatter.rb +20 -0
- data/example_specs/passing/partial_mock_example.rb +29 -0
- data/example_specs/passing/pending_example.rb +20 -0
- data/example_specs/passing/predicate_example.rb +27 -0
- data/example_specs/passing/shared_example_group_example.rb +81 -0
- data/example_specs/passing/shared_stack_examples.rb +36 -0
- data/example_specs/passing/simple_matcher_example.rb +31 -0
- data/example_specs/passing/spec_helper.rb +14 -0
- data/example_specs/passing/stack.rb +36 -0
- data/example_specs/passing/stack_spec.rb +64 -0
- data/example_specs/passing/stack_spec_with_nested_example_groups.rb +67 -0
- data/example_specs/passing/stubbing_example.rb +69 -0
- data/example_specs/passing/yielding_example.rb +33 -0
- data/example_specs/ruby1.9.compatibility/access_to_constants_spec.rb +85 -0
- data/features-pending/command_line/line_number_option.feature +56 -0
- data/features-pending/command_line/line_number_option_with_example_with_no_name.feature +22 -0
- data/features-pending/example_groups/example_group_with_should_methods.feature +29 -0
- data/features-pending/example_groups/implicit_docstrings.feature +59 -0
- data/features-pending/example_groups/nested_groups.feature +32 -0
- data/features-pending/expectations/expect_change.feature +65 -0
- data/features-pending/expectations/expect_error.feature +44 -0
- data/features-pending/extensions/custom_example_group.feature +19 -0
- data/features-pending/formatters/custom_formatter.feature +30 -0
- data/features-pending/heckle/heckle.feature +56 -0
- data/features-pending/interop/examples_and_tests_together.feature +80 -0
- data/features-pending/interop/rspec_output.feature +25 -0
- data/features-pending/interop/test_but_not_test_unit.feature +26 -0
- data/features-pending/interop/test_case_with_should_methods.feature +46 -0
- data/features-pending/matchers/define_diffable_matcher.feature +26 -0
- data/features-pending/matchers/define_matcher.feature +179 -0
- data/features-pending/matchers/define_matcher_with_fluent_interface.feature +27 -0
- data/features-pending/mocks/mix_stubs_and_mocks.feature +22 -0
- data/features-pending/mocks/stub_implementation.feature +26 -0
- data/features-pending/pending/pending_examples.feature +81 -0
- data/features-pending/runner/specify_line_number.feature +32 -0
- data/features/before_and_after_blocks/before_and_after_blocks.feature +169 -0
- data/features/expectations/customized_message.feature +54 -0
- data/features/matchers/define_matcher_outside_rspec.feature +39 -0
- data/features/mock_framework_integration/use_flexmock.feature +23 -0
- data/features/mock_framework_integration/use_mocha.feature +23 -0
- data/features/mock_framework_integration/use_rr.feature +23 -0
- data/features/mock_framework_integration/use_rspec.feature +23 -0
- data/features/step_definitions/running_rspec_steps.rb +35 -0
- data/features/subject/explicit_subject.feature +31 -0
- data/features/subject/implicit_subject.feature +31 -0
- data/features/support/env.rb +82 -0
- data/features/support/matchers/smart_match.rb +14 -0
- data/lib/rspec/autorun.rb +2 -0
- data/lib/rspec/core.rb +38 -0
- data/lib/rspec/core/backward_compatibility.rb +9 -0
- data/lib/rspec/core/command_line_options.rb +60 -0
- data/lib/rspec/core/configuration.rb +222 -0
- data/lib/rspec/core/deprecation.rb +47 -0
- data/lib/rspec/core/example.rb +113 -0
- data/lib/rspec/core/example_group.rb +239 -0
- data/lib/rspec/core/example_group_subject.rb +77 -0
- data/lib/rspec/core/formatters.rb +16 -0
- data/lib/rspec/core/formatters/base_formatter.rb +123 -0
- data/lib/rspec/core/formatters/base_text_formatter.rb +139 -0
- data/lib/rspec/core/formatters/documentation_formatter.rb +84 -0
- data/lib/rspec/core/formatters/progress_formatter.rb +36 -0
- data/lib/rspec/core/kernel_extensions.rb +15 -0
- data/lib/rspec/core/mocking/with_absolutely_nothing.rb +13 -0
- data/lib/rspec/core/mocking/with_flexmock.rb +25 -0
- data/lib/rspec/core/mocking/with_mocha.rb +22 -0
- data/lib/rspec/core/mocking/with_rr.rb +26 -0
- data/lib/rspec/core/mocking/with_rspec.rb +21 -0
- data/lib/rspec/core/rake_task.rb +88 -0
- data/lib/rspec/core/runner.rb +66 -0
- data/lib/rspec/core/shared_behaviour.rb +41 -0
- data/lib/rspec/core/shared_behaviour_kernel_extensions.rb +31 -0
- data/lib/rspec/core/version.rb +16 -0
- data/lib/rspec/core/world.rb +105 -0
- data/rspec-core.gemspec +204 -0
- data/script/console +8 -0
- data/spec/resources/example_classes.rb +67 -0
- data/spec/rspec/core/command_line_options_spec.rb +63 -0
- data/spec/rspec/core/configuration_spec.rb +171 -0
- data/spec/rspec/core/example_group_spec.rb +351 -0
- data/spec/rspec/core/example_group_subject_spec.rb +67 -0
- data/spec/rspec/core/example_spec.rb +67 -0
- data/spec/rspec/core/formatters/base_formatter_spec.rb +105 -0
- data/spec/rspec/core/formatters/documentation_formatter_spec.rb +5 -0
- data/spec/rspec/core/formatters/progress_formatter_spec.rb +29 -0
- data/spec/rspec/core/kernel_extensions_spec.rb +13 -0
- data/spec/rspec/core/mocha_spec.rb +29 -0
- data/spec/rspec/core/resources/a_bar.rb +0 -0
- data/spec/rspec/core/resources/a_foo.rb +0 -0
- data/spec/rspec/core/resources/a_spec.rb +1 -0
- data/spec/rspec/core/resources/custom_example_group_runner.rb +14 -0
- data/spec/rspec/core/resources/example_classes.rb +67 -0
- data/spec/rspec/core/resources/utf8_encoded.rb +8 -0
- data/spec/rspec/core/runner_spec.rb +34 -0
- data/spec/rspec/core/shared_behaviour_spec.rb +185 -0
- data/spec/rspec/core/world_spec.rb +167 -0
- data/spec/rspec/core_spec.rb +35 -0
- data/spec/ruby_forker.rb +13 -0
- data/spec/spec_helper.rb +72 -0
- metadata +219 -0
data/.document
ADDED
data/.gitignore
ADDED
data/.treasure_map.rb
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
Beholder.runner = 'clear; ruby -Ilib -Ispec'
|
|
2
|
+
|
|
3
|
+
map_for(:rspec_core) do |m|
|
|
4
|
+
|
|
5
|
+
m.watch 'lib', 'spec', 'example_specs'
|
|
6
|
+
|
|
7
|
+
m.add_mapping %r%example_specs/(.*)_spec\.rb% do |match|
|
|
8
|
+
["example_specs/#{match[1]}_spec.rb"]
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
m.add_mapping %r%spec/(.*)_spec\.rb% do |match|
|
|
12
|
+
["spec/#{match[1]}_spec.rb"]
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
m.add_mapping %r%spec/spec_helper\.rb% do |match|
|
|
16
|
+
Dir["spec/**/*_spec.rb"]
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
m.add_mapping %r%lib/(.*)\.rb% do |match|
|
|
20
|
+
tests_matching match[1]
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
data/License.txt
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
(The MIT License)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2009 David Chelimsky, Chad Humphries
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
6
|
+
a copy of this software and associated documentation files (the
|
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
11
|
+
the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be
|
|
14
|
+
included in all copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
19
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
20
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
21
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
22
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.markdown
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# RSpec Core
|
|
2
|
+
|
|
3
|
+
See README.markdown at [http://github.com/rspec/meta](http://github.com/rspec/meta)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
#### Also see
|
|
7
|
+
|
|
8
|
+
* [http://github.com/rspec/expectations](http://github.com/rspec/expectations)
|
|
9
|
+
* [http://github.com/rspec/mocks](http://github.com/rspec/mocks)
|
data/Rakefile
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'rake'
|
|
3
|
+
require 'yaml'
|
|
4
|
+
|
|
5
|
+
$:.unshift 'lib'
|
|
6
|
+
|
|
7
|
+
require 'rake/rdoctask'
|
|
8
|
+
require 'rspec/core/rake_task'
|
|
9
|
+
require 'cucumber/rake/task'
|
|
10
|
+
|
|
11
|
+
begin
|
|
12
|
+
require 'jeweler'
|
|
13
|
+
Jeweler::Tasks.new do |gem|
|
|
14
|
+
gem.name = "rspec-core"
|
|
15
|
+
gem.summary = "RSpec Core"
|
|
16
|
+
gem.description = 'RSpec Core'
|
|
17
|
+
gem.email = "dchelimsky@gmail.com;chad.humphries@gmail.com"
|
|
18
|
+
gem.homepage = "http://github.com/rspec/core"
|
|
19
|
+
gem.authors = ["David Chelimsky", "Chad Humphries"]
|
|
20
|
+
gem.add_development_dependency('rspec-expectations', '>= 2.0.0.a1')
|
|
21
|
+
gem.add_development_dependency('rspec-mocks', '>= 2.0.0.a1')
|
|
22
|
+
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
|
23
|
+
end
|
|
24
|
+
rescue LoadError
|
|
25
|
+
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
Rspec::Core::RakeTask.new :spec do |t|
|
|
29
|
+
t.ruby_opts = %[-Ilib -Ispec]
|
|
30
|
+
t.pattern = "spec/**/*_spec.rb"
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
task :cleanup_rcov_files do
|
|
34
|
+
rm_rf 'coverage.data'
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
desc "Run all examples using rcov"
|
|
38
|
+
Rspec::Core::RakeTask.new :rcov => :cleanup_rcov_files do |t|
|
|
39
|
+
t.rcov = true
|
|
40
|
+
t.rcov_opts = %[-Ilib -Ispec --exclude "mocks,expectations,gems/*,spec/resources,spec/lib,spec/spec_helper.rb,db/*,/Library/Ruby/*,config/*"]
|
|
41
|
+
t.rcov_opts << %[--no-html --aggregate coverage.data]
|
|
42
|
+
t.pattern = "spec/**/*_spec.rb"
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
if RUBY_VERSION == '1.9.1'
|
|
46
|
+
Cucumber::Rake::Task.new :features do |t|
|
|
47
|
+
t.cucumber_opts = %w{--format progress}
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
task :default => [:spec, :features]
|
|
51
|
+
else
|
|
52
|
+
Cucumber::Rake::Task.new :features do |t|
|
|
53
|
+
t.rcov = true
|
|
54
|
+
t.rcov_opts = %[-Ilib -Ispec --exclude "mocks,expectations,gems/*,features,spec/ruby_forker,spec/rspec,spec/resources,spec/lib,spec/spec_helper.rb,db/*,/Library/Ruby/*,config/*"]
|
|
55
|
+
t.rcov_opts << %[--text-report --sort coverage --aggregate coverage.data]
|
|
56
|
+
t.cucumber_opts = %w{--format progress}
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
task :default => [:rcov, :features]
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
Rake::RDocTask.new do |rdoc|
|
|
64
|
+
if File.exist?('VERSION.yml')
|
|
65
|
+
config = YAML.load(File.read('VERSION.yml'))
|
|
66
|
+
version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
|
|
67
|
+
else
|
|
68
|
+
version = ""
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
rdoc.rdoc_dir = 'rdoc'
|
|
72
|
+
rdoc.title = "rspec-core #{version}"
|
|
73
|
+
rdoc.rdoc_files.include('README*')
|
|
74
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
75
|
+
end
|
|
76
|
+
|
data/TODO.markdown
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
### RSpec Core
|
|
2
|
+
|
|
3
|
+
* support the following concepts from rspec-1.2.x
|
|
4
|
+
* run options
|
|
5
|
+
* from command line
|
|
6
|
+
* in rake task definitions
|
|
7
|
+
* formatters
|
|
8
|
+
* Ensure context works everywhere describe does
|
|
9
|
+
* For self testing
|
|
10
|
+
** shared example groups should not be merged into the real 'world'
|
|
11
|
+
* make sure all behaviour refs are now examplegroup
|
|
12
|
+
|
|
13
|
+
### Maxwell
|
|
14
|
+
|
|
15
|
+
* need to figure out how maxwell will allow us to mix all the rails testing
|
|
16
|
+
facilities with rspec when working with rails.
|
data/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.0.0.a1
|
data/VERSION.yml
ADDED
data/bin/rspec
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# Temporary, until things are actually gems
|
|
3
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '/../../expectations/lib'))
|
|
4
|
+
require 'rspec/expectations'
|
|
5
|
+
|
|
6
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '/../../mocks/lib'))
|
|
7
|
+
require 'rspec/mocks'
|
|
8
|
+
|
|
9
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
10
|
+
require 'rspec/autorun'
|
|
11
|
+
|
|
12
|
+
Rspec::Core::ExampleGroup.send(:include, Rspec::Matchers)
|
data/cucumber.yml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"Why have failing examples?", you might ask.
|
|
2
|
+
|
|
3
|
+
They allow us to see failure messages. RSpec wants to provide meaningful and helpful failure messages. The failures in this directory not only provide you a way of seeing the failure messages, but they provide RSpec's own specs a way of describing what they should look like and ensuring they stay correct.
|
|
4
|
+
|
|
5
|
+
To see the types of messages you can expect, stand in this directory and run:
|
|
6
|
+
|
|
7
|
+
../bin/spec ./*.rb
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
describe "Running specs with --diff" do
|
|
2
|
+
it "should print diff of different strings" do
|
|
3
|
+
uk = <<-EOF
|
|
4
|
+
RSpec is a
|
|
5
|
+
behaviour driven development
|
|
6
|
+
framework for Ruby
|
|
7
|
+
EOF
|
|
8
|
+
usa = <<-EOF
|
|
9
|
+
RSpec is a
|
|
10
|
+
behavior driven development
|
|
11
|
+
framework for Ruby
|
|
12
|
+
EOF
|
|
13
|
+
usa.should == uk
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
class Animal
|
|
17
|
+
def initialize(name,species)
|
|
18
|
+
@name,@species = name,species
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def inspect
|
|
22
|
+
<<-EOA
|
|
23
|
+
<Animal
|
|
24
|
+
name=#{@name},
|
|
25
|
+
species=#{@species}
|
|
26
|
+
>
|
|
27
|
+
EOA
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "should print diff of different objects' pretty representation" do
|
|
32
|
+
expected = Animal.new "bob", "giraffe"
|
|
33
|
+
actual = Animal.new "bob", "tortoise"
|
|
34
|
+
expected.should eql(actual)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
|
|
3
|
+
# Run spec w/ -fs to see the output of this file
|
|
4
|
+
|
|
5
|
+
describe "Failing examples with no descriptions" do
|
|
6
|
+
|
|
7
|
+
# description is auto-generated as "should equal(5)" based on the last #should
|
|
8
|
+
it do
|
|
9
|
+
3.should equal(2)
|
|
10
|
+
5.should equal(5)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it { 3.should be > 5 }
|
|
14
|
+
|
|
15
|
+
it { ["a"].should include("b") }
|
|
16
|
+
|
|
17
|
+
it { [1,2,3].should_not respond_to(:size) }
|
|
18
|
+
|
|
19
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "Mocker" do
|
|
4
|
+
|
|
5
|
+
it "should be able to call mock()" do
|
|
6
|
+
mock = mock("poke me")
|
|
7
|
+
mock.should_receive(:poke)
|
|
8
|
+
mock.poke
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should fail when expected message not received" do
|
|
12
|
+
mock = mock("poke me")
|
|
13
|
+
mock.should_receive(:poke)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should fail when messages are received out of order" do
|
|
17
|
+
mock = mock("one two three")
|
|
18
|
+
mock.should_receive(:one).ordered
|
|
19
|
+
mock.should_receive(:two).ordered
|
|
20
|
+
mock.should_receive(:three).ordered
|
|
21
|
+
mock.one
|
|
22
|
+
mock.three
|
|
23
|
+
mock.two
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "should get yelled at when sending unexpected messages" do
|
|
27
|
+
mock = mock("don't talk to me")
|
|
28
|
+
mock.should_not_receive(:any_message_at_all)
|
|
29
|
+
mock.any_message_at_all
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "has a bug we need to fix" do
|
|
33
|
+
pending "here is the bug" do
|
|
34
|
+
# Actually, no. It's fixed. This will fail because it passes :-)
|
|
35
|
+
mock = mock("Bug")
|
|
36
|
+
mock.should_receive(:hello)
|
|
37
|
+
mock.hello
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# stub frameworks like to gum up Object, so this is deliberately
|
|
2
|
+
# set NOT to run so that you don't accidentally run it when you
|
|
3
|
+
# run this dir.
|
|
4
|
+
|
|
5
|
+
# To run it, stand in this directory and say:
|
|
6
|
+
#
|
|
7
|
+
# RUN_FLEXMOCK_EXAMPLE=true ruby ../bin/spec mocking_with_flexmock.rb
|
|
8
|
+
|
|
9
|
+
if ENV['RUN_FLEXMOCK_EXAMPLE']
|
|
10
|
+
Spec::Runner.configure do |config|
|
|
11
|
+
config.mock_framework = :flexmock
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe "Flexmocks" do
|
|
15
|
+
it "should fail when the expected message is received with wrong arguments" do
|
|
16
|
+
m = flexmock("now flex!")
|
|
17
|
+
m.should_receive(:msg).with("arg").once
|
|
18
|
+
m.msg("other arg")
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should fail when the expected message is not received at all" do
|
|
22
|
+
m = flexmock("now flex!")
|
|
23
|
+
m.should_receive(:msg).with("arg").once
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# stub frameworks like to gum up Object, so this is deliberately
|
|
2
|
+
# set NOT to run so that you don't accidentally run it when you
|
|
3
|
+
# run this dir.
|
|
4
|
+
|
|
5
|
+
# To run it, stand in this directory and say:
|
|
6
|
+
#
|
|
7
|
+
# RUN_MOCHA_EXAMPLE=true ruby ../bin/spec mocking_with_mocha.rb
|
|
8
|
+
|
|
9
|
+
if ENV['RUN_MOCHA_EXAMPLE']
|
|
10
|
+
Spec::Runner.configure do |config|
|
|
11
|
+
config.mock_framework = :mocha
|
|
12
|
+
end
|
|
13
|
+
describe "Mocha framework" do
|
|
14
|
+
it "should should be made available by saying config.mock_framework = :mocha" do
|
|
15
|
+
m = mock()
|
|
16
|
+
m.expects(:msg).with("arg")
|
|
17
|
+
m.msg
|
|
18
|
+
end
|
|
19
|
+
it "should should be made available by saying config.mock_framework = :mocha" do
|
|
20
|
+
o = Object.new
|
|
21
|
+
o.expects(:msg).with("arg")
|
|
22
|
+
o.msg
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# stub frameworks like to gum up Object, so this is deliberately
|
|
2
|
+
# set NOT to run so that you don't accidentally run it when you
|
|
3
|
+
# run this dir.
|
|
4
|
+
|
|
5
|
+
# To run it, stand in this directory and say:
|
|
6
|
+
#
|
|
7
|
+
# RUN_RR_EXAMPLE=true ruby ../bin/spec mocking_with_rr.rb
|
|
8
|
+
|
|
9
|
+
if ENV['RUN_RR_EXAMPLE']
|
|
10
|
+
Spec::Runner.configure do |config|
|
|
11
|
+
config.mock_framework = :rr
|
|
12
|
+
end
|
|
13
|
+
describe "RR framework" do
|
|
14
|
+
it "should should be made available by saying config.mock_framework = :rr" do
|
|
15
|
+
o = Object.new
|
|
16
|
+
mock(o).msg("arg")
|
|
17
|
+
o.msg
|
|
18
|
+
end
|
|
19
|
+
it "should should be made available by saying config.mock_framework = :rr" do
|
|
20
|
+
o = Object.new
|
|
21
|
+
mock(o) do |m|
|
|
22
|
+
m.msg("arg")
|
|
23
|
+
end
|
|
24
|
+
o.msg
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
|
|
3
|
+
class MockableClass
|
|
4
|
+
def self.find id
|
|
5
|
+
return :original_return
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe "A partial mock" do
|
|
10
|
+
|
|
11
|
+
it "should work at the class level (but fail here due to the type mismatch)" do
|
|
12
|
+
MockableClass.should_receive(:find).with(1).and_return {:stub_return}
|
|
13
|
+
MockableClass.find("1").should equal(:stub_return)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should revert to the original after each spec" do
|
|
17
|
+
MockableClass.find(1).should equal(:original_return)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
|
|
3
|
+
class BddFramework
|
|
4
|
+
def intuitive?
|
|
5
|
+
true
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def adopted_quickly?
|
|
9
|
+
#this will cause failures because it reallly SHOULD be adopted quickly
|
|
10
|
+
false
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe "BDD framework" do
|
|
15
|
+
|
|
16
|
+
before(:each) do
|
|
17
|
+
@bdd_framework = BddFramework.new
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should be adopted quickly" do
|
|
21
|
+
#this will fail because it reallly SHOULD be adopted quickly
|
|
22
|
+
@bdd_framework.should be_adopted_quickly
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "should be intuitive" do
|
|
26
|
+
@bdd_framework.should be_intuitive
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "should not respond to test" do
|
|
30
|
+
#this will fail
|
|
31
|
+
@bdd_framework.test
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end
|