Как начать на TDD с Ruby on Rails? [закрытый]

Вруб является неуклюжим и больше сохраняется. Я переключился на "Декомпилятор Java" , который имеет гладкий UI и поддержку новых функций языка.

Каждый декомпилятор, который я использовал, тем не менее, сталкивается с кодом, который он успешно не декомпилирует. Для тех это помогает понять демонтированный Байт-код Java, произведенный стандартным инструментом JDK, javap.

167
задан marcgg 31 May 2011 в 13:39
поделиться

5 ответов

Какую статью о Ruby on Rails TDD 101 мне следует прочитать?

Я начну с руководства по тестированию приложений rails .

Также Railscast содержит отличные скринкасты о том, как использовать различные инструменты тестирования.

Что мне нужно тестировать?

Я начну с моделей, поскольку их легко тестировать. Простое правило состоит в том, что вам нужно охватить все операторы if в вашем тесте.

Вам следует проверить цель метода (чтобы убедиться, что он работает должным образом), а также все крайние случаи.

Также убедитесь, что вы не закончили тестирование.

Какой гем / плагин мне следует использовать? Стоит ли использовать rspec? Что-нибудь еще?

При запуске просто используйте Test Unit . Вы можете использовать rspec или огурец после того, как познакомитесь с основами.

Автотест - хороший инструмент, если вы хотите по-настоящему испытать себя. Но это не требуется.

Когда у меня есть все классы тестирования, как мне перейти и развернуть их?

Не уверен в вопросе. Обычно вы не развертываете тесты. После того, как у вас есть все классы тестирования, просто введите rake test для запуска всех ваших тестов.

Сколько времени на самом деле занимает TDD?

Это действительно экономит время. Если вам нравится головоломка-лабиринт, вы знаете, что ее почти всегда легче решить, если вы пройдете от финиша к началу. То же самое и с TDD. Без Test Driven вы постоянно думаете: «Что мне делать дальше?». С Test Driven тест скажет вам, что делать дальше (он ломается, если нет логики, поэтому вам просто нужно исправить сломанную часть). Кроме того, у вас будет меньше ошибок, что в конечном итоге сэкономит вам много времени. Могу ли я получить все, просто играя с этим и читать онлайн учебники? Если мне нужно прочитать книгу, какая книга?

Тебе не нужна книга. Самый эффективный способ чему-либо научиться: просто сделай это. Вернитесь к книге или онлайн-ресурсам, если столкнетесь с вопросом или проблемой. Это тоже гибко.

В вашем примере вещи, которые требуют тестирования, следующие: Контакт может быть связан с 1 компанией, Компания может иметь несколько контактов, создавать способы создания контактов и связывать контакты с компаниями.

class CompanyTest <Test::Unit
    def test_relationship # test associations/relationships
        c = companies(:some_company)
        assert_equal [a list of contacts], c.contacts # make sure a company can have multiple contacts
    end
end

class ContactTest<Test::Unit
   def  test_relationships
        c = contact(:some_contact)
        assert_equal some_company, c.company # make sure the contact link to 1 company
   end

   def  test_create/add
        # test create contacts, here you need to make sure the contact is created correctly, and linked to company correctly
   end
end
202
ответ дан 23 November 2019 в 21:00
поделиться

Я рекомендую эту книгу: Agile Web Development with Rails

8
ответ дан 23 November 2019 в 21:00
поделиться

Я использую:

  1. Shoulda и rspec для тестирования
  2. Mocha для имитации
  3. Factory_girl для фабрик
  4. parallel_specs для более быстрого тестирования
  5. metric_fu для анализа кода
5
ответ дан 23 November 2019 в 21:00
поделиться

TDD в первую очередь предназначен для написания тестов. Это в основном вынуждает вас написать собственный клиент, прежде чем писать код приложения. Цикл обычно состоит в том, чтобы написать тест для несуществующего API, запустить тест, ожидая, что он завершится ошибкой, написать свой код API, снова запустить тест и убедиться, что он прошел. Затем напишите свой следующий тест ... и так далее.

5
ответ дан 23 November 2019 в 21:00
поделиться

Какой гем / плагин мне следует использовать?

Мне всегда нравился shoulda .

Сколько времени на самом деле требует TDD?

Причина, по которой я всегда отдавал предпочтение разработке TDD, заключается в том, что она фокусируется на том, как я буду реализовывать конкретный фрагмент кода. У меня есть анекдотическое ощущение, что, когда я более строго придерживаюсь принципов TDD, я трачу меньше времени на доработку позже. Однако количество потраченного времени зависит от того, насколько хорошо вы пишете модульные тесты. Если модульные тесты не отражают ожидаемого поведения, все время, потраченное на них, будет потрачено зря.

3
ответ дан 23 November 2019 в 21:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: