Переопределение фильтра before_save для тестирования в Rails - PullRequest
0 голосов
/ 29 мая 2009

В моем классе моделей установлен фильтр before_save, который устанавливает поле даты на будущую дату, чтобы гарантировать целостность данных.

Это работает очень хорошо, за исключением того, что касается модульного тестирования. Я хотел бы настроить тестовый сценарий, который включает в себя установку этого поля даты на дату в прошлом. Я не могу сделать это, используя ActiveRecord, потому что вызывается фильтр before_save и дата обновляется до будущей даты. Это лучший способ сделать это, чтобы выполнить сырой SQL, используя ActiveRecord::Base::connection.update?

Ответы [ 3 ]

2 голосов
/ 01 июня 2009

Может быть, лучше использовать фиктивный объект. Для быстрого ознакомления с объектными объектами прочитайте

http://erikonrails.wordpress.com/2008/05/07/how-to-use-mock-objects/

0 голосов
/ 29 мая 2009

Если вы не позволяете этому случиться, зачем вам проверять, когда это произошло?

Что я имею в виду, если вы никогда не позволяете сохранить дату в прошлом в этой модели, тогда у вас никогда не должно быть этого, так что же нужно тестировать?

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

0 голосов
/ 29 мая 2009

Это может считаться хаком, но вы всегда можете заново открыть класс модели в модульном тесте и отменить реализацию фильтра before_save.

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