Rails RSpec, как это применимо в таком случае? - PullRequest
2 голосов
/ 06 февраля 2011

Я ежедневно нахожусь в процессе изучения новых вещей о Rails (начал изучать 2 и теперь переходить на 3 концепции). Как проект с Rails, я пишу браузерную игру. До сих пор я использовал приборы для загрузки данных в свою базу данных и создавал пользовательскую задачу для воссоздания БД, загрузки приборов и т. Д. Каждый раз, когда мне это нужно. Я должен сказать, что мне нравится этот подход, потому что я могу легко определять своих монстров с помощью оружия, бонусов и т. Д. С помощью активных ассоциаций записей в функциях.

Тем не менее, я вижу, что люди используют такую ​​среду тестирования, как RSpec. Хотя я вижу, что RSpec используется как язык для определения правильного поведения, я не совсем понимаю, как это может мне помочь. Но так как мне нравится делать вещи правильно, я почти уверен, что мне еще многое предстоит понять и прочитать об этом.

Поэтому я хотел бы попросить убедительный пример того, как RSpec может быть полезен. Например, предположим, что пользователь создает альянс. С помощью своего кода я проверяю, есть ли у этого пользователя уже альянс, существует ли альянс с таким именем, есть ли у него деньги для создания этого альянса и многое другое. Где RSpec подходит здесь? Каким будет хороший пример использования?

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

Я уже знаю, что в Rails есть много замечательных возможностей для программистов, и я хотел бы также воспользоваться этим. Но я все еще не знаю о RSpec. Вот почему я был бы признателен за полезную информацию. Спасибо:)

1 Ответ

2 голосов
/ 06 февраля 2011

Rspec - это среда тестирования.Это позволяет вам писать автоматизированные фрагменты кода, которые проверяют, что ваш код действительно работает.Например, вы можете написать тест, чтобы убедиться, что никакие два альянса не имеют одинакового имени:

describe Alliance do
  it 'should not have the same name as another alliance' do
    first = Alliance.create :name => "Test Name"
    second = Alliance.build :name => "Test Name"

    second.should_not be_valid
  end
end

Этот код будет проверять, что никакие два альянса не могут иметь одинаковое имя - это способ проверкиваш код на самом деле работает.

Fixtures, Factories, Mocks и Stubs - все это способы создания временных данных, которые можно использовать в тестах.RSpec может использовать Fixtures, но он также не требует их.Если вы хотите загрузить тестовые данные в свою базу данных, вы можете сделать это любым удобным для вас способом для выполнения тестов.

Некоторые другие тестовые среды - это Cucumber, TestUnit, MiniTest и Shoulda.Вы должны использовать его уже для написания тестов для своего кода.Вы также можете прочитать другие, чтобы выяснить, какая структура лучше всего соответствует вашим потребностям.

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