@proRuby

Страница 353 из 1594
Alex
27.12.2016
10:41:36
потому что BDD

потому что assigns это антипаттерн в BDD.

Igor
27.12.2016
10:42:00
а кто говорит о BDD?

в rspec-rails есть свой инструментарий

Google
Alex
27.12.2016
10:42:18
а зачем тестировать внутреннее устройство контроллера? чтобы потом с болью его переписывать?

нужно подавать запрос и смотреть ответ

Igor
27.12.2016
10:42:39
верно

а что если меняется внешнее состояние

по запросу?

Alex
27.12.2016
10:43:04
это выносить отдельно и проверять юнит тестами.

Igor
27.12.2016
10:43:26
те юнит тест на контроллер?

Alex
27.12.2016
10:43:32
так то тебе никто не мешает сделать запрос и убедиться что модель изменилась.

Igor
27.12.2016
10:43:33
ну ты понял

Alex
27.12.2016
10:43:41
нет у тебя эта логика из контроллера выносится.

Igor
27.12.2016
10:43:59
это не работает так

может в идеальном сфеерическом мире

с срущими радугой единорогами

Google
Igor
27.12.2016
10:44:35
все контроллеры тонкие

вся трава голубая

а небо зеленое

Dmitriy
27.12.2016
10:44:52
Всмысле BDD это же расширение подхода TDD

Alex
27.12.2016
10:44:58
а какой такой стейт у тебя может быть контроллер который нельзя в тесте проверить запросом в базу?

Alex
27.12.2016
10:45:13
или прочесть кэш?

что за суперстейт контроллера такой.

Igor
27.12.2016
10:45:53
там действительно лучше делать слой абстракции

но по твоей логике

лазать в базу данных

для проверки состояния

Dima
27.12.2016
10:46:20
это выносить отдельно и проверять юнит тестами.
как юнит тесты к котроллеру прикрутить. Это же тоже функция ее тоже надо тестировать

Igor
27.12.2016
10:46:20
уже зашквар

Alex
27.12.2016
10:46:30
не сказал бы

ты же не контроллер тестируешь

Igor
27.12.2016
10:46:36
в рейлс мире есть понятие

Google
Alex
27.12.2016
10:46:39
ты проверяешь что он изменил те данные которые ты ожидал

Igor
27.12.2016
10:46:42
функциональных тестов

Dmitriy
27.12.2016
10:46:49
ну вот я пишу тест describe 'GET new' do it 'render :new template' do get :new expect(response).to render_template(:new) end it 'assigns new Achievement to @achievement' do get :new expect(assigns(:achievement)).to be_a_new(Achievement) end end А потом уже реализую данный функционал

это как называется?

Alex
27.12.2016
10:46:55
это именно то что должен делать контроллер, привести данные в базе например к определенному состоянию

как он это сделает и какие роешения примет не так важно.

ты же метод контроллера тестируешь.

@proDOT
27.12.2016
10:47:43
/warn

Group Butler [beta]
27.12.2016
10:47:44
Dima has been warned (1/5)

Dmitriy
27.12.2016
10:48:17
@Fedcomp гугл мне подсказал, как вы все советивали) БЫл вопрос нашел ответ

как реализовать

Dmitriy
27.12.2016
10:48:36
работает же)

Alex
27.12.2016
10:48:46
assigns выпилили потому что это считается антипаттерном.

Ты конечно можешь это юзать, т.к ты разработчик.

Dmitriy
27.12.2016
10:49:00
а что использовать?

Alex
27.12.2016
10:49:17
убедись что контроллер изменил модель/вернул ответ который ты ожидаешь.

Dmitriy
27.12.2016
10:49:38
@Fedcomp что значит антипаттерном

Alex
27.12.2016
10:49:38
тестирование view стоит делать через капибару, имхо конечно.

антипаттер - это практики считающиеся дурными с точки зрения определенной группы лиц.

Google
Alex
27.12.2016
10:50:03
По каким либо причинам которые были озвучены.

Dmitriy
27.12.2016
10:50:05
а

Alex
27.12.2016
10:50:26
грубо говоря - паттерн - подход/шаблон поведения, антипаттерн соответственно плохой подход.

Admin
ERROR: S client not available

Dmitriy
27.12.2016
10:50:35
а чем assigns так плох, я читал всю переписку так и не понял

Alex
27.12.2016
10:50:44
тем что ты тестируешь как написан контроллер

когда тебе надо убедиться что он ведет себя как нужно, тебе должно быть неважно как он внутри написан.

Иначе потом при любом переписывании могут падать тесты.

Alex
27.12.2016
10:51:32
это нормально
Ну так себе, смысла нет тестировать внутреннее поведение почти всегда.

Igor
27.12.2016
10:51:35
ты не путай интеграционные тесты

Dmitriy
27.12.2016
10:51:40
https://www.pluralsight.com/courses/test-driven-rails-rspec-capybara-cucumber я просто начал изучать эти курсы

Igor
27.12.2016
10:51:43
когда вся система для тебя блекбокс

Dmitriy
27.12.2016
10:51:54
там так делают, видимо не совсем хорошие курсы(

Igor
27.12.2016
10:52:02
и "функциональные" (ака юнит тесты)

но вообще

я согласен

Alex
27.12.2016
10:52:15
там так делают, видимо не совсем хорошие курсы(
capybara точно не тестирует как шаблон внутри написан.

Igor
27.12.2016
10:52:21
что assigns - это херовый подход

нужно смотреть сам ответ

Google
Alex
27.12.2016
10:52:37
ты не путай интеграционные тесты
Тут скорее дело в том что официальные разработчики пытаются убрать тесты на контроллер и оставить интеграционные.

Igor
27.12.2016
10:52:40
а не какой шаблон будет рендерится/или подобное

Alex
27.12.2016
10:53:17
то что в шаблон передана переменная не значит что шаблон нарисуется как ты ожидаешь.

Dmitriy
27.12.2016
10:53:35
require 'rails_helper' feature 'home page' do scenario 'welcome message' do visit("/") expect(page).to have_content('Welcome') end end

Alex
27.12.2016
10:53:35
Если реально нужно тестировать шаблоны/верстку плюс общие интеграционные тесты, то тут капибара рулит.

Dmitriy
27.12.2016
10:53:43
это уже копибара же

Igor
27.12.2016
10:53:43
тестируй сам ответ

Dmitriy
27.12.2016
10:54:14
@t3hk0d3 gпо такому принципу ? feature 'home page' do scenario 'welcome message' do visit("/") expect(page).to have_content('Welcome') end end

заходить на страницу и смотреть

Alex
27.12.2016
10:54:37
Проверяешь что при нажатии кнопки происходят какие то вещи например.

Страница 353 из 1594