Куда относится этот модульный тест? - PullRequest
1 голос
/ 21 октября 2011

Полагаю, это не зависит от того, на какой платформе вы строите свое приложение. Для аргументов я использую Ruby on Rails.Здесь проблема.У меня есть две модели, которые тесно связаны, и я имею в виду, что они тесно связаны между собой has_many.Гипотетически, скажем, две модели следующие:

  • Модель пользователя
  • Модель умений

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

Мой вопрос: где тестирование этой логики подходит лучше всего?Это входит в user_test.rb?skill_test.rb?Первоначально я думал, что, так как это индивидуальное умение, которое обновит счетчик для пользователя, все тесты должны идти в тест умения.Моя другая мысль: кого это волнует, если тест проводится в первую очередь?Здесь правильно или неправильно?

Ответы [ 2 ]

0 голосов
/ 21 октября 2011

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

Существует вопрос, задающий разницу здесь .

0 голосов
/ 21 октября 2011

Я бы поставил его в модели User самостоятельно, потому что навыки принадлежат пользователю, так же как и атрибут достижения, и вы тестируете функциональность пользователя.

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

Поскольку технологии ORM, такие как ActiveRecord, предназначены для того, чтобы вы могли представлять реляционные проекты в объектно-ориентированном формате, вполне законно писать тесты, как если бы объекты былиЧистые типы объектов спроектированы так, как вы обычно хотели бы их проектировать.

...