Skip to content

Instantly share code, notes, and snippets.

@metaskills
Created January 24, 2011 15:03
Show Gist options
  • Save metaskills/793330 to your computer and use it in GitHub Desktop.
Save metaskills/793330 to your computer and use it in GitHub Desktop.
An example of how the current Minitest does not let you describe choose the base class as its first scope.
require 'rubygems'
gem 'minitest'
require 'minitest/autorun'
module MyTestHelpers
def self.included(klass)
klass.class_eval do
extend ClassMethods
include InstanceMethods
end
end
module ClassMethods
def foo?
true
end
end
module InstanceMethods
def bar?
false
end
end
end
# My spec helper test.
class MySpecClass < MiniTest::Spec
include MyTestHelpers
end
class TestSpecClass < MySpecClass
it 'should let me use instance helpers' do
refute bar?
end
it 'should let me use class helpers' do
assert self.class.foo?
end
describe 'describe scope' do
it 'should let me use instance helpers' do
refute bar?
end
it 'should let me use class helpers' do
assert self.class.foo?
end
end
end
=begin
1) Error:
test_0001_should_let_me_use_instance_helpers(describe scope):
NoMethodError: undefined method `bar?' for #<#<Class:0x1010dd818>:0x1010d1c70>
/Users/kencollins/Desktop/TryMinitest/test.rb:75:in `test_0001_should_let_me_use_instance_helpers'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:817:in `__send__'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:817:in `run'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:664:in `_run_suite'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:657:in `map'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:657:in `_run_suite'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:647:in `_run_suites'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:647:in `map'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:647:in `_run_suites'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:623:in `_run_anything'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:778:in `run_tests'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:765:in `send'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:765:in `run'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:764:in `each'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:764:in `run'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:558:in `autorun'
/Users/kencollins/Desktop/TryMinitest/test.rb:72
2) Error:
test_0002_should_let_me_use_class_helpers(describe scope):
NoMethodError: undefined method `foo?' for describe scope:Class
/Users/kencollins/Desktop/TryMinitest/test.rb:79:in `test_0002_should_let_me_use_class_helpers'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:817:in `__send__'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:817:in `run'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:664:in `_run_suite'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:657:in `map'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:657:in `_run_suite'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:647:in `_run_suites'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:647:in `map'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:647:in `_run_suites'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:623:in `_run_anything'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:778:in `run_tests'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:765:in `send'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:765:in `run'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:764:in `each'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:764:in `run'
/opt/local/lib/ruby/gems/1.8/gems/minitest-2.0.2/lib/minitest/unit.rb:558:in `autorun'
/Users/kencollins/Desktop/TryMinitest/test.rb:72
6 tests, 4 assertions, 0 failures, 2 errors, 0 skips
=end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment