Как вы пишете и выполняете тесты Ruby в интерпретаторе Ruby? - PullRequest
0 голосов
/ 23 июня 2010

Я работал с lotrepls Ruby-интерпретатором, и я хочу написать в интерпретаторе тесты, которые затем я могу написать для кода Ruby.В Python я могу писать док-тесты, а затем писать код для прохождения тестов.Например:

>>> b  
1

Это проверяет, что b = 1, и ввод b = 1 позволит пройти этот тест.

Существует ли аналогичный способ написания тестов в интерпретаторе Ruby, их выполнения, написания кода для прохождения тестов, а затем повторного выполнения теста?Есть ли в Ruby эквивалент doctest?Для моего приложения я буду выполнять тесты и код в размещенном интерпретаторе, таком как lotrepls, а не устанавливать что-либо на мою локальную машину.

Ответы [ 2 ]

2 голосов
/ 23 июня 2010

Есть RubyDocTest, но я бы посоветовал вам взглянуть на что-то вроде RSpec или другой современный BDD / TDD основа.

Здесь довольно легко писать тесты, и вы получаете доступ к сложным и / или пользовательским утверждениям, которые вы не можете получить в ходе тестирования. Например, вот простой набор тестов для приложения для оценки бейсбола:

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 голосов
/ 31 августа 2018

Это небольшой старый пост, но я столкнулся с той же проблемой несколько месяцев назад.

Ответ Джона верен, но если вы хотите использовать что-то похожее на сеанс irb, вы можете попробовать на примере , в частности, он поддерживает Ruby

Например, вы можете написать документ Markdown следующим образом:

This is an awesome expression:

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

```

Затем вы просто запускаете из оболочки

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

Вы также можете встроить тест в комментарий Ruby, например

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

И это все.Пример выполнен и проверен, поэтому ваш документ также работает как регрессионный тест.

Отказ от ответственности : Как я уже сказал, у меня было такое же желание сделать TDD в Ruby, поэтому я написал byexample .Я действительно надеюсь, что другие найдут это настолько же полезным, как и я.

...