【问题标题】:How to define Ruby Test::Unit testcase with `must`如何用`must`定义Ruby Test::Unit测试用例
【发布时间】:2015-03-13 16:27:33
【问题描述】:

我有一个如下形式的测试用例:

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

并按照A Test::Unit Trick to Know About 一书中的建议使用must 重写了它

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

当我运行它时,我得到一个undefined method 'must' 错误,如下所示:

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)

我认为must 可能是minitest 的一部分,所以我需要'minitest/unit',但我仍然收到错误。我还假设 must 关键字不是 rspec 的一部分,我还没有使用它。

如何让它正常工作?

【问题讨论】:

  • 你在 Minitest 中找到关于 must 的任何文档了吗?
  • 我查看了 Test::Unit 文档,但找不到任何痕迹

标签: ruby unit-testing testunit


【解决方案1】:

看起来该方法不是开箱即用的,而是由第三方开发的。你需要添加here描述的代码。

【讨论】:

  • 非常感谢。我只是大吃一惊,这本书会记录一种需要第三方破解的技术,而没有提及这一点。当然,除非它以前在 Test::Unit 中,然后被贬低。无论如何,干杯。
  • 这个问题发生了一些奇怪的事情,我介绍问题的第一部分丢失了。我一直在阅读的这本书是“Gregory T Brown 的 Ruby Best Practices”。书中的插图没有显示require语句,因此不清楚是否存在外部依赖。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-22
  • 1970-01-01
  • 1970-01-01
  • 2016-08-02
  • 1970-01-01
  • 2012-01-17
  • 1970-01-01
相关资源
最近更新 更多