RoR тестирование контроллеров - PullRequest
2 голосов
/ 18 августа 2010

Я использую RoR 3 и думаю, что что-то изменилось в тестах контроллера.

Нет

def test_should_create_post

но

test "should create user" do
...
end

Есть ли какое-нибудь описание, как это отображение и т. Д.? Потому что я не понимаю.

И второе. Как программировать (какое утверждение) использовать для проверки логина?

1 Ответ

1 голос
/ 18 августа 2010

так что стиль test "something here" - это способ помочь нам. По сути, это то же самое, что и def test_as_you_want, но они помогли нам, убрав эти неприятные '_ (подчеркивания)' и обернув фактическую формулировку теста в строку. Это изменение вернулось, фу ... может 2.3.х. этот факт необходимо проверить, но как минимум полтора года назад.

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

В любом случае, посмотрите, как это делают «знаменитые» плагины аутентификации. от Restful Auth до Devise, в основном вам нужен тест, который вы можете:

  1. Регистрация для учетной записи пользователя
  2. все ваши письма с подтверждением отправлены и т.д ..

Большинство из них «обманывают» или выбирают легкий путь, например, передавая помощника по имени signed_in users(:one). Предполагая, что вы крутые и используете светильники.

По сути, вот как выглядит вспомогательный метод, если в вашем плагине / геме Auth его нет, например, в Clearance, которого не было, когда я впервые писал свои тесты ... не уверен, есть ли он сейчас, но это проливает свет на то, как это должно выглядеть. Обратите внимание, что я прокомментировал Restful Auth и как он / они это сделали:

  #login user
def login_user(user = users(:one))
  #Restful Auth Example
  # @request.session[:user_id] = user ? users(user).id : nil
  # Clearance
  @controller.class_eval { attr_accessor :current_user }
  @controller.current_user = user
  return user
end

На самом деле я думаю, что украл это у их помощника по входу в систему musta ... это, вероятно, то, что я сделал. В любом случае он показывает, как подделать логин пользователя.

Теперь, когда вы тестируете, просто передайте этот метод login_user вашему тесту, когда вам нужно, чтобы пользователь вошел в систему, и начните тестировать оставшуюся часть метода, не беспокоясь о том, что он вошел в систему. 1000 человек, следовавших за ним на github, закричали бы, если бы он, по крайней мере, НЕ ЗАЙТИ этого парня.

ура

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