Опрос: кто как пишет тесты на create/update ?

2 views
Skip to first unread message

Maxim Kulkin

unread,
Apr 27, 2009, 8:11:32 AM4/27/09
to ror...@googlegroups.com
Друзья, попробовал недавно Shoulda и у меня возник вопрос: кто как
пишет тесты для контроллеров на экшены create и update ?
Надо протестировать именно создание/одновление записи указанными данными.

Timur Vafin

unread,
Apr 27, 2009, 9:50:55 AM4/27/09
to ror...@googlegroups.com
Посмотрите на git://github.com/mcornick/klang.git это проект от
ботов, там есть много примеров.

2009/4/27 Maxim Kulkin <maxim....@gmail.com>:


> Друзья, попробовал недавно Shoulda и у меня возник вопрос: кто как
> пишет тесты для контроллеров на экшены create и update ?
> Надо протестировать именно создание/одновление записи указанными данными.
>
> >
>

--
Timur Vafin

Eugene Bolshakov

unread,
Apr 27, 2009, 10:05:53 AM4/27/09
to RubyOnRails to russian
Точнее это проект от человека, который прошел training у ботов

> это проект от ботов

Maxim Filatov

unread,
Apr 27, 2009, 12:02:02 PM4/27/09
to ror...@googlegroups.com
Представляется сразу такой злой spam-bot
training...
Бррр...

Я есессно знаю, кто такие ThoughBot, просто
первая ассоциация со словом "бот"
нездоровая ;)



---
Best regards,
Maxim Filatov

Maxim Kulkin

unread,
Apr 28, 2009, 1:30:37 AM4/28/09
to ror...@googlegroups.com
Судя по коду, проверять, что данные
действительно обновлялись, не прянято.
А зря.

Eugene Bolshakov

unread,
Apr 28, 2009, 1:43:39 AM4/28/09
to RubyOnRails to russian
Почему зря?

Maxim Kulkin

unread,
Apr 28, 2009, 2:35:52 AM4/28/09
to ror...@googlegroups.com
Действительно. "У нас отличные тесты
которые ничего не тестируют."

Eugene Bolshakov

unread,
Apr 28, 2009, 4:09:54 AM4/28/09
to RubyOnRails to russian
Я на полном серьезе спросил. Если ты мог бы привести маленький пример
из которого будет понятно, что в тесте контроллера нужно тестировать,
что данные обновились, было бы здорово.

Sergey Kruk

unread,
Apr 28, 2009, 4:40:58 AM4/28/09
to ror...@googlegroups.com
Тестировать одновременно контроллер и обновление данных -- это
интегральный тест, скорее. Точнее, интегральным он станет, если ещё
озаботиться тем, чтобы данные потом появились не только в базе, но и
на странице.

На вопрос "Как вы пишете тесты для..."

Ответ такой:
Когда я тестирую только контроллер, то не тестирую обновление данных.
Для меня важно assert_response и assert_redirected_to. И если меня
интересуют сообщения какие-то, то assert_tag.

А интегральные тесты, с проверкой изменения данных и их отображения на
страницах и в базе, я пишу с помощью Cucumber. Мой пример здесь:
http://lonelyelk.ru/posts/11
=======================================
2009/4/28 Maxim Kulkin <maxim....@gmail.com>:

sergey

unread,
Apr 28, 2009, 4:54:31 AM4/28/09
to RubyOnRails to russian

Maxim Kulkin

unread,
Apr 28, 2009, 6:32:21 AM4/28/09
to ror...@googlegroups.com
Да, у меня что-то подобное в итоге и получилось. И это вписывается в
стиль shoulda.

28 апреля 2009 г. 12:54 пользователь sergey <sergey...@gmail.com> написал:

Maxim Kulkin

unread,
Apr 28, 2009, 6:41:46 AM4/28/09
to ror...@googlegroups.com
28 апреля 2009 г. 12:40 пользователь Sergey Kruk
<serge...@gmail.com> написал:

> Тестировать одновременно контроллер и обновление данных -- это
> интегральный тест, скорее. Точнее, интегральным он станет, если ещё
> озаботиться тем, чтобы данные потом появились не только в базе, но и
> на странице.
>
> На вопрос "Как вы пишете тесты для..."
>
> Ответ такой:
> Когда я тестирую только контроллер, то не тестирую обновление данных.
> Для меня важно assert_response и assert_redirected_to. И если меня
> интересуют сообщения какие-то, то assert_tag.

1. Тестировать view, я считаю, надо в отдельных тестах, а не в тестах
контроллера.
2. Тестировать то, что контроллер передал полученные от пользователя
данные в модель, считаю, необходимым.

В свое время я писал тесты (хоть и хрупкие, но быстрые), которые в
shoulda+factory_girl+mocha выглядели бы так:

setup do
@foo = Factory(:foo)
@attributes = { 'bar' => 'baz' }

put :update, :id => @foo.id, :foo => @attributes
end

before_should { @foo.expects(:update_attributes!).with(attributes) }

> А интегральные тесты, с проверкой изменения данных и их отображения на
> страницах и в базе, я пишу с помощью Cucumber. Мой пример здесь:
> http://lonelyelk.ru/posts/11

Ну, этим баловством занимайтесь сами

Sergey Kruk

unread,
Apr 28, 2009, 6:50:53 AM4/28/09
to ror...@googlegroups.com
ок.

=======================================
2009/4/28 Maxim Kulkin <maxim....@gmail.com>:
Reply all
Reply to author
Forward
0 new messages