Search code examples
rubyunit-testingtestunit

How to define Ruby Test::Unit testcase with `must`


I had a test case of the following form:

require 'test/unit'
class SomeTests < Test::Unit::TestCase
  def test_should_do_action
   assert true
  end
end

and have re-written it using must as suggested in the book A Test::Unit Trick to Know About:

require 'test/unit'
class SomeTests < Test::Unit::TestCase
  must "do action" do
    assert true
  end
end

And when I run it, I get an undefined method 'must' error shown as follows:

SomeTests.rb:3:in `<class:SomeTests>': undefined method `must' for     SomeTests:Class (NoMethodError)  from
SomeTests.rb:2:in `<top (required)>'    from
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'   from
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'   from
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rake/rake_test_loader.rb:10:in `block (2 levels) in <main>'   from
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rake/rake_test_loader.rb:9:in `each'  from
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rake/rake_test_loader.rb:9:in `block in <main>'   from
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rake/rake_test_loader.rb:4:in `select'    from
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rake/rake_test_loader.rb:4:in `<main>' rake aborted! Command failed with status (1): [ruby -w -I"lib" -I"/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0" "/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rake/rake_test_loader.rb" "test/**/*Tests.rb" ]
Tasks: TOP => default => test (See full trace by running task with --trace)

I thought that must might be a part of minitest, so I required 'minitest/unit' instead, but I still get an error. I also assume that must keyword isn't part of rspec, which I'm not using yet.

How do I get this to work properly?


Solution

  • It looks like that method is not provided out of the box, but was developed by a third party. You need to add code described here.