Должен ли я проверить положительные и отрицательные высказывания? - PullRequest
1 голос
/ 02 февраля 2012

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

Кажется, есть положительное тестирование:

test "password should match the password_confirmation " do
    user = User.new(
    :email => "email@mail.com",
    :password => "password",
    :password_confirmation => "password")
    assert user.valid?, "did not save user even though password matches confimation"
  end

и отрицательное тестирование:

test "password should not be valid with mismatching password_confirmation " do
    user = User.new(
    :email => "email@mail.com",
    :password => "password",
    :password_confirmation => "doesnotmatch")
    assert user.invalid?, "saved user with mismatching password_confirmation"
  end

Излишне ли включать оба теста в ваш набор тестов или это хорошая практика?

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Посмотрите на TDD.Когда вы можете двигаться дальше? , это объясняет, когда вы будете готовы к тестам (и коду) и сможете двигаться дальше.В вашем примере это означает:

  • Сначала вы пишете положительный тест.Тест не пройден.
  • Затем вы пишете необходимый код, чтобы тест прошел успешно.
  • После этого вам нужен еще один тест, чтобы доказать, что вашей реализации недостаточно.Когда вы написали, например,

    class User
      def initialize(hash)
        @hash = hash
      end
      def valid?
        true
      end
    end
    

    , вам понадобится еще один тестовый пример, чтобы доказать, что это неправильно.

  • Напишите следующий тестовый пример, который показывает, что проверка пароля может быть неудачной.

Я вижу следующие случаи:

  • Нет пароля
  • Соответствующие пароли (но слишком короткие)
  • Соответствующие пароли (длинные и достаточно сложные))
  • Не совпадает пароль

Так что для этого вам понадобится 4 контрольных примера.

0 голосов
/ 02 февраля 2012

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

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