Какой смысл в некоторых макросах Муста? - PullRequest
0 голосов
/ 29 марта 2010

Я думаю, что должно быть действительно аккуратно, но я не понимаю, почему существуют некоторые макросы, такие как:

  • should_validate_uniqueness_of :title
  • should_validate_presence_of :body, :message => /wtf/
  • should_validate_presence_of :title
  • should_validate_numericality_of :user_id

Я относительно новичок в тестировании, но какой цели они служат? Это почти точное зеркало тех же проверок, которые происходят в модели. Например, что именно вы достигнете, войдя в свою модель и написав validates_uniqueness_of :title, а затем написав тест, который скажет should_validate_uniqueness_of :title?

Ответы [ 3 ]

1 голос
/ 29 марта 2010

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

1 голос
/ 29 марта 2010

Я не использовал shoulda, и я не знаю точно, о чем думали авторы, но я написал много юнит-тестов Ruby за эти годы, поэтому я сделаю предположение.

Некоторые части программы могут быть объявлены в RoR чисто декларативно, например validate_uniqueness_of. Другие вещи вы пишете более сложные методы для реализации. Класс обычно состоит из комбинации обоих. Обратите внимание, что последнее обычно занимает намного больше времени (во времени и пространстве), чем первое.

Так что, если кто-то заинтересовался в наброске дизайна для класса, возможно, потому, что его взволновало «TDD», можно написать тест, который объявил бы все, что класс должен поддерживать: title уникален, идентификатор пользователя - это mersenne премьер, что угодно. Это быстро и просто написать. Затем можно было бы написать код для всего этого, зная контракт класса и имея возможность увидеть его в краткой форме.

Это всего лишь предположение.

0 голосов
/ 29 марта 2010

Это макросы, специфичные для RSpec & ActiveRecord.

Да, Стоит ли на самом деле играть с RSpec.

http://robots.thoughtbot.com/post/159805987/speculating-with-shoulda

...