你如何在Ruby解释器中编写和执行Ruby测试?

问题描述 投票:0回答:2

我正在使用lotrepls Ruby解释器,我想在解释器中编写测试,然后我可以编写Ruby代码来传递。在Python中,我可以编写doctests然后编写代码来传递doctests。例如:

>>> b  
1

这测试b = 1,输入b = 1将通过此doctest。

是否有类似的方法在Ruby解释器中编写测试,执行它们,编写代码来传递测试,然后再次执行测试?是否有Ruby doctest等价物?对于我的应用程序,我将在像lotrepls这样的托管解释器中执行测试和代码,而不是在我的本地机器上安装一些东西。

ruby unit-testing interpreter
2个回答
2
投票

RubyDocTest,但我鼓励你看看像RSpec或其他现代BDD / TDD框架。

在那里编写测试也很容易,并且您可以访问复杂和/或自定义断言,而这些断言是您无法在doctest中实际获得的。例如,这是棒球得分应用程序的一组简单测试:

describe BaseballScorer do
  before :each do
    @s = Scorer.new(Game.new)
  end

  it "should score a 0-0 game when no runs are hit" do
    @s.home.score.should == @s.away.score.should == @s.total_runs
  end

  it "should record runs that are hit" do
    @s.game.run_hit(:away)
    @s.away.runs.should == @s.away.score.should == 1
  end

  # ...

0
投票

这是一个有点旧的帖子,但几个月前我遇到了同样的问题。

约翰的答案是正确的,但如果你想使用类似于irb会话的东西你可以尝试byexample,特别是它supports Ruby

例如,您可以像这样写一个Markdown文档:

This is an awesome expression:

```ruby
>> 1 + 2
=> 3

```

然后你就从shell运行

$ byexample -l ruby your-markdown-doc.md
[PASS] Pass: 1 Fail: 0 Skip: 0

您也可以将测试嵌入Ruby注释中

# square 2
# => 4
def square x
  x * x
end

就是这样。该示例已执行并已检查,因此您的文档也可用作回归测试。

免责声明:就像我说的,我有同样的愿望在Ruby中做TDD所以我写了byexample。我真的希望比其他人更有用,而且我做到了。

© www.soinside.com 2019 - 2024. All rights reserved.