Class: Test::Unit::TestCase
- Inherits:
-
Object
- Object
- Test::Unit::TestCase
- Defined in:
- lib/pending.rb
Constant Summary collapse
- @@pending_cases =
[]
- @@at_exit =
false
Class Method Summary collapse
-
.pending(description, &block) ⇒ Object
This method will define a test method using the description as the test name (“pending function” => “test_pending_function”).
Instance Method Summary collapse
-
#pending(description = "", &block) ⇒ Object
The pending method lets you define a block of test code that is currently “pending” functionality.
Class Method Details
.pending(description, &block) ⇒ Object
This method will define a test method using the description as the test name (“pending function” => “test_pending_function”)
Instead of doing this:
def test_function_is_pending
pending "this test is pending"
end
You can just do this:
pending “function is pending”
This method can be called with a block passed, the same as the instance method
76 77 78 79 80 81 82 83 |
# File 'lib/pending.rb', line 76 def self.pending(description, &block) test_name = "test_#{description.gsub(/\s+/,'_')}".to_sym defined = instance_method(test_name) rescue false raise "#{test_name} is already defined in #{self}" if defined define_method(test_name) do pending(description) {self.instance_eval(&block)} end end |
Instance Method Details
#pending(description = "", &block) ⇒ Object
The pending method lets you define a block of test code that is currently “pending” functionality.
You can use it two ways. One is simply put a string as the parameter:
def test_web_service_integration
pending "This is not done yet..."
end
This will output a “P” in the test output alerting there is pending functionality.
You can also supply a block of code:
def test_new_helpers
pending "New helpers for database display" do
output = render_record(User.first)
assert_equal "Jerry User ([email protected])", output
end
end
If the block doesn’t fail, then the test will flunk with output like:
<New helpers for database display> did not fail.
If the test fails (i.e., the functionality isn’t implemented), then it will not fail the surrounding test.
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/pending.rb', line 34 def pending(description = "", &block) if block_given? failed = false begin block.call rescue failed = true end flunk("<#{description}> did not fail.") unless failed end caller[0] =~ (/(.*):(.*):in `(.*)'/) @@pending_cases << "#{$3} at #{$1}, line #{$2}" print "P" @@at_exit ||= begin at_exit do puts "\nPending Cases:" @@pending_cases.each do |test_case| puts test_case end end end end |