Как начать тддинг с рубина и неправильно? - PullRequest
2 голосов
/ 02 марта 2012

Я знаю, как сделать TDD на других языках, но я новичок и в рубине, и в неправильном. Я немного борюсь с основами того, как настроить (игрушечный) проект. Я хочу написать метод, который вычисляет факториал (n! = 1 * 2 * 3 * ... * n). Я создал файл test/factorial_test.rb, который до сих пор содержит

require 'wrong'
include Wrong

Как мне продолжить отсюда? Пишу ли я свои утверждения в глобальной области видимости файла

assert { factorial(1) == 1 }
assert { factorial(2) == 2 }
#...

(что немного странно)? Или я должен следовать некоторым (каким?) Соглашениям и заключать каждый тест в свой метод

def one_factorial_should_be_one
  assert { factorial(1) == 1 }
end

Я немного растерялся с основами здесь, поэтому любой ответ о том, что здесь считается наилучшей практикой, высоко ценится.

Ответы [ 3 ]

1 голос
/ 02 марта 2012

Неверно просто предоставляет пару (по общему мнению, умных) методов утверждения.Вам все еще нужна среда для автоматизации выполнения тестов, например minitest .

1 голос
/ 02 марта 2012

В Ruby доступно несколько платформ тестирования

  • Test :: Unit
  • minitest
  • rspec
  • musta - аналогично rspec
  • cucumber - среда тестирования BDD

Базовая среда тестирования Ruby - Test :: Unit.Простой пример выглядит следующим образом:

require 'test/unit'
class MyTest < Test::Unit::TestCase
  def test_equality
    assert_equal(1,1)
  end
end

Недавно Minitest был включен в стандартную библиотеку Ruby, поэтому, если вы хотите использовать эту библиотеку, вам не нужно ничего устанавливать.Простая спецификация мини-теста выглядит следующим образом:

require 'minitest/autorun'
describe Factorial do
  it "should provide factorial of 1 as 1" do
    factorial(1).must_equal 1
  end
end
1 голос
/ 02 марта 2012

Вы можете начать с minitest инфраструктуры тестирования, которая входит в стандартную библиотеку.это более продуктивно и просто, чем использование assert напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...