Должен ли я написать тесты rails с ключевым словом def или test? - PullRequest
5 голосов
/ 31 июля 2009

Это кажется простым вопросом, но я нигде не могу найти ответ. Я заметил, что в целом тесты в приложении Ruby on Rails можно записать так:

  test "the truth" do
    assert true
  end

или

  def the_truth
    assert true
  end

Кажется, новый материал пишет тесты в первую очередь, но я не могу найти причину этого Один предпочтительнее другого? Еще один правильный? Спасибо.

Ответы [ 4 ]

8 голосов
/ 01 августа 2009

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

Если вы предпочитаете описательные названия тестов, я настоятельно рекомендую использовать метод test. Я нахожу это более читабельным.

test "should not be able to login with invalid password" do
  #...
end

def_should_not_be_able_to_login_with_invalid_password
  #...
end

Кроме того, поскольку описание является строкой, оно может содержать любые символы. С def вы ограничены в том, какие символы вы можете использовать.

2 голосов
/ 31 июля 2009

Я считаю, что первый метод был реализован начиная с Rails 2.2. Насколько мне известно, это просто улучшает читабельность вашего кода (так как def может быть любой функцией, в то время как test используется только в тестовых случаях). Удачи!

0 голосов
/ 31 июля 2009

Поскольку Майк Трпчич предлагает вам проверить RSpec и Cucumber. Я хотел бы добавить, что вы также должны взглянуть на:

Ifa - это макро-фреймворк для написания кратких модульных тестов для ваших моделей / контроллеров, а второй - замена для приборов.

0 голосов
/ 31 июля 2009

Я бы предложил провести ваше тестирование либо с RSpec , либо с Огурцом . Я использую оба, чтобы проверить все мои приложения. RSpec используется для тестирования моделей и контроллеров, а Cucumber проверяет виды (с помощью включенной функциональности Webrat ).

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