Разное

Метод спока: Воспитание ребенка: в чем Бенджамин Спок устарел

Воспитание ребенка: в чем Бенджамин Спок устарел

https://radiosputnik.ria.ru/20210315/spok-1600991277.html

Воспитание ребенка: в чем Бенджамин Спок устарел

Воспитание ребенка: в чем Бенджамин Спок устарел — Радио Sputnik, 15.03.2021

Воспитание ребенка: в чем Бенджамин Спок устарел

Радио Sputnik, 15.03.2021

2021-03-15T07:00

2021-03-15T07:00

2021-03-15T07:00

авторы

общество

дети

воспитание детей

/html/head/meta[@name=’og:title’]/@content

/html/head/meta[@name=’og:description’]/@content

https://cdnn21.img.ria.ru/images/155639/43/1556394343_0:98:3027:1801_1920x0_80_0_0_8b16b88e19b7adb59b7433a137c2bcaa.jpg

Книги доктора Спока в свое время произвели революцию в воспитании детей и уходе за ними. Разбираемся, какие из рекомендаций знаменитого американского педиатра по-прежнему следует взять на вооружение, а про какие лучше забыть.Бенджамин Спок ‒ автор полутора десятков книг по воспитанию детей и уходу за ними, практически все они стали бестселлерами. Самой известной из них остается самая первая книга американского педиатра ‒ «Ребенок и уход за ним», вышедшая в 1946 году. В день памяти доктора Спока (он умер 15 марта 1998 года в возрасте 94 лет) вспоминаем о той роли, которую сыграли его книги в изменении подхода к воспитанию детей. Видеть в ребенке личностьКнига «Ребенок и уход за ним» стала одним из главных символов американского бэби-бума середины прошлого века. В ней даны ответы на 779 популярных вопросов вполне практического плана. Сейчас, конечно, вряд ли найдется мама, которая не знает, что ребенка не следует туго пеленать и не обязательно кормить строго по расписанию. Но в середине XX века эти «диковинные» советы доктора Спока стали настоящей сенсацией.Педагогический арсенал тогдашних родителей состоял из закоснелых пособий, суждений, поучений бабок, соседок, свекровей и тещ. В знак протеста против методов воспитания, практиковавшихся, в частности, и в его семье, Бенджамин Спок и написал свою книгу. Кстати, он был старшим из шести детей в семье, а потому ему пришлось во всей полноте узнать, что такое заботы няньки. В ребенке, даже самом маленьком, нужно видеть личность. Его ни в коем случае нельзя унижать, но не нужно и превращать в семейного кумира ‒ так можно сформулировать некоторые из главных мыслей автора книги.Именно здравый смысл должен стать основой детского воспитания, утверждал доктор Спок: «Если дитя плачет, утешьте или накормите его, пусть даже будет нарушен график кормления. Но не надо бросаться к младенцу стремглав, едва он захнычет. Если же ребенок не может или не хочет чего-то делать, не заставляйте его».Книга – бестселлерДля большинства американских пап и мам новое пособие, а его читали и просто как бестселлер, стало глотком свежего воздуха. Поколение бэби-бумеров было воспитано на идеях Спока. Они надолго стали непререкаемыми истинами и в педиатрии, и в педагогике.Только в англоязычных странах книга разошлась тиражом в десятки миллионов экземпляров, а всего она переведена на 40 с лишним языков. И, кстати, полное ее название – «Уход за ребенком в духе здравого смысла» – наилучшим образом, как считал автор, отражало ее назначение. Спока не так поняли В своей книге доктор Спок, в частности, писал, что «ребенок сам знает, что ему нужно». Некоторые родители буквально восприняли этот тезис как идею ни в чем не ограничивать ребенка и позволить ему делать все, что он сочтет нужным. Бенджамин Спок постоянно возражал против такой трактовки его рекомендаций. Он специально дополнил книгу главой, посвященной дисциплине: он не против ее как таковой, он против дисциплины без любви, против воспитания страхом наказания.И все же некоторые советы устарелиВ последние лет десять педиатры учат молодых матерей кормить детей «по требованию». То есть, с небольшой натяжкой, «по Споку». И «качание», и держание ребенка на руках из нарушения «системы Спока» стали правилом.В свое время идеи доктора произвели революцию в системе ухода за новорожденными. Американский педиатр настаивал, что меню кормящей мамы должно «включать что-либо из следующих продуктов: апельсины, помидоры, свежая капуста или ягоды». Он же советовал вводить грудничкам прикорм, начиная с «агрессивных» продуктов. Например, апельсинового сока. А начиная с 2‒6 месяцев ребенок, по мнению Спока, должен пробовать мясо и печень. Сейчас диетологи считают совершенно иначе. Такие продукты, уверены они, следует давать не ранее возраста 8 месяцев: незрелый кишечник малыша просто не сможет переварить мясные блюда, поэтому лучше не торопиться. А что касается, соков, то лучше их до года вообще не давать, уверены современные педиатры. Также была опровергнута и рекомендация Спока укладывать младенцев спать на живот ‒ якобы для того, чтобы убрать риск задохнуться или захлебнуться, если ребенка стошнит. Педиатры из разных стран настаивали, что эта рекомендация не только неправильна, но и потенциально смертельно опасна, и их точка зрения в конце концов одержала верх. Часть тезисов Бенджамина Спока опровергнута развитием науки и медицинской практикой, говорит в интервью радио Sputnik автор художественных и научно-популярных книг, врач-педиатр с многолетним стажем Татьяна Шипошина:Польза и вред ходят под руку, говорит Татьяна Шипошина. По ее мнению, надо использовать чутье и мудрость, чтобы из любой «системы» извлечь именно то, что подходит и ребенку, и мамам. Из всякого правила есть исключения, ровно поэтому и не нужно фанатично следовать догмам и моде. На этом настаивал, кстати, и сам Бенджамин Спок, который постоянно вносил изменения в новые издания своих книг. И в любом случае доктору Споку нужно сказать спасибо. Хотя бы за то, что его книга вернула воспитание детей родителям.Автор Кирилл Гришин, радио SputnikКоротко и по делу. Только отборные цитаты в нашем Телеграм-канале.

https://radiosputnik.ria.ru/20210205/erudit-1595999396.html

https://radiosputnik.ria.ru/20200908/psikholog-1576927727.html

Радио Sputnik

1

5

4.7

96

[email protected]

7 495 645-6601

ФГУП МИА «Россия сегодня»

https://xn--c1acbl2abdlkab1og.xn--p1ai/awards/

2021

Кирилл Гришин

https://cdnn21.img.ria.ru/images/155740/38/1557403806_0:21:413:434_100x100_80_0_0_d58b60ea8cad562382698b0ff82b2929. jpg

Кирилл Гришин

https://cdnn21.img.ria.ru/images/155740/38/1557403806_0:21:413:434_100x100_80_0_0_d58b60ea8cad562382698b0ff82b2929.jpg

Новости

ru-RU

https://radiosputnik.ria.ru/docs/about/copyright.html

https://xn--c1acbl2abdlkab1og.xn--p1ai/

Радио Sputnik

1

5

4.7

96

[email protected]

7 495 645-6601

ФГУП МИА «Россия сегодня»

https://xn--c1acbl2abdlkab1og.xn--p1ai/awards/

1920

1080

true

1920

1440

true

https://cdnn21.img.ria.ru/images/155639/43/1556394343_171:0:2902:2048_1920x0_80_0_0_bb75cdac0a6e45653e2df960aa5dc4fa.jpg

1920

1920

true

Радио Sputnik

1

5

4.7

96

[email protected]

7 495 645-6601

ФГУП МИА «Россия сегодня»

https://xn--c1acbl2abdlkab1og.xn--p1ai/awards/

Кирилл Гришин

https://cdnn21.img.ria.ru/images/155740/38/1557403806_0:21:413:434_100x100_80_0_0_d58b60ea8cad562382698b0ff82b2929. jpg

общество, дети, воспитание детей

Авторы, Общество, Дети, воспитание детей

Книги доктора Спока в свое время произвели революцию в воспитании детей и уходе за ними. Разбираемся, какие из рекомендаций знаменитого американского педиатра по-прежнему следует взять на вооружение, а про какие лучше забыть.

5 февраля 2021, 07:00Авторы

Как вырастить юного эрудита? Советы бывалых

Бенджамин Спок ‒ автор полутора десятков книг по воспитанию детей и уходу за ними, практически все они стали бестселлерами. Самой известной из них остается самая первая книга американского педиатра ‒ «Ребенок и уход за ним», вышедшая в 1946 году. В день памяти доктора Спока (он умер 15 марта 1998 года в возрасте 94 лет) вспоминаем о той роли, которую сыграли его книги в изменении подхода к воспитанию детей.

Видеть в ребенке личность

Книга «Ребенок и уход за ним» стала одним из главных символов американского бэби-бума середины прошлого века. В ней даны ответы на 779 популярных вопросов вполне практического плана. Сейчас, конечно, вряд ли найдется мама, которая не знает, что ребенка не следует туго пеленать и не обязательно кормить строго по расписанию. Но в середине XX века эти «диковинные» советы доктора Спока стали настоящей сенсацией.

Педагогический арсенал тогдашних родителей состоял из закоснелых пособий, суждений, поучений бабок, соседок, свекровей и тещ. В знак протеста против методов воспитания, практиковавшихся, в частности, и в его семье, Бенджамин Спок и написал свою книгу. Кстати, он был старшим из шести детей в семье, а потому ему пришлось во всей полноте узнать, что такое заботы няньки.

© РИА Новости / Чернов / Перейти в медиабанкДоктор Бенджамин Спок среди участников детского праздника «Пусть всегда будет солнце».

© РИА Новости / Чернов

Перейти в медиабанк

Доктор Бенджамин Спок среди участников детского праздника «Пусть всегда будет солнце».

В ребенке, даже самом маленьком, нужно видеть личность. Его ни в коем случае нельзя унижать, но не нужно и превращать в семейного кумира ‒ так можно сформулировать некоторые из главных мыслей автора книги.

Именно здравый смысл должен стать основой детского воспитания, утверждал доктор Спок: «Если дитя плачет, утешьте или накормите его, пусть даже будет нарушен график кормления. Но не надо бросаться к младенцу стремглав, едва он захнычет. Если же ребенок не может или не хочет чего-то делать, не заставляйте его».

© Depositphotos.com / evgenyatamanНоворожденный

© Depositphotos.com / evgenyataman

Новорожденный

Книга – бестселлер

Для большинства американских пап и мам новое пособие, а его читали и просто как бестселлер, стало глотком свежего воздуха. Поколение бэби-бумеров было воспитано на идеях Спока. Они надолго стали непререкаемыми истинами и в педиатрии, и в педагогике.

Только в англоязычных странах книга разошлась тиражом в десятки миллионов экземпляров, а всего она переведена на 40 с лишним языков. И, кстати, полное ее название – «Уход за ребенком в духе здравого смысла» – наилучшим образом, как считал автор, отражало ее назначение.

Спока не так поняли

В своей книге доктор Спок, в частности, писал, что «ребенок сам знает, что ему нужно». Некоторые родители буквально восприняли этот тезис как идею ни в чем не ограничивать ребенка и позволить ему делать все, что он сочтет нужным. Бенджамин Спок постоянно возражал против такой трактовки его рекомендаций. Он специально дополнил книгу главой, посвященной дисциплине: он не против ее как таковой, он против дисциплины без любви, против воспитания страхом наказания.

© Depositphotos.com / AntonLozovoyМама с ребенком

© Depositphotos.com / AntonLozovoy

Мама с ребенком

И все же некоторые советы устарели

В последние лет десять педиатры учат молодых матерей кормить детей «по требованию». То есть, с небольшой натяжкой, «по Споку». И «качание», и держание ребенка на руках из нарушения «системы Спока» стали правилом.

В свое время идеи доктора произвели революцию в системе ухода за новорожденными. Американский педиатр настаивал, что меню кормящей мамы должно «включать что-либо из следующих продуктов: апельсины, помидоры, свежая капуста или ягоды». Он же советовал вводить грудничкам прикорм, начиная с «агрессивных» продуктов. Например, апельсинового сока. А начиная с 2‒6 месяцев ребенок, по мнению Спока, должен пробовать мясо и печень.

Сейчас диетологи считают совершенно иначе. Такие продукты, уверены они, следует давать не ранее возраста 8 месяцев: незрелый кишечник малыша просто не сможет переварить мясные блюда, поэтому лучше не торопиться. А что касается, соков, то лучше их до года вообще не давать, уверены современные педиатры.

© Depositphotos.com / tycoonДетское питание

© Depositphotos.com / tycoon

Детское питание

Также была опровергнута и рекомендация Спока укладывать младенцев спать на живот ‒ якобы для того, чтобы убрать риск задохнуться или захлебнуться, если ребенка стошнит. Педиатры из разных стран настаивали, что эта рекомендация не только неправильна, но и потенциально смертельно опасна, и их точка зрения в конце концов одержала верх.

Часть тезисов Бенджамина Спока опровергнута развитием науки и медицинской практикой, говорит в интервью радио Sputnik автор художественных и научно-популярных книг, врач-педиатр с многолетним стажем Татьяна Шипошина:

«Безнадежно устарели многие рекомендации Спока. Скажем, о допаивании младенцев сладкой водой, сахарным сиропом. Раньше варили сироп, все это делалось, животы у них пучило. Нынешние же рекомендации гласят, что нужно как можно позже вводить глюкозу. Сейчас появились молочные смеси, которые по-разному адаптированы, гипоаллергенные, безлактозные. Во времена доктора Спока не было знаний об иммунитете, об антителах, об аллергии. Его утверждения об отсутствии связи между здоровьем ребенка и типом вскармливания признано ложным ВОЗ. Доктор Спок говорил: все равно как детей вскармливать – можно искусственным путем или естественным. Утверждение принесло в свое время большой вред. Оно стало руководством для женщин, которые отказывались вскармливать детей грудью. Устарели положения доктора о введении прикормов, о борьбе с коликами и запорами. Мало кто думал тогда и о непереносимости глютена. Устарели положения о пеленании и так далее».

Польза и вред ходят под руку, говорит Татьяна Шипошина. По ее мнению, надо использовать чутье и мудрость, чтобы из любой «системы» извлечь именно то, что подходит и ребенку, и мамам. Из всякого правила есть исключения, ровно поэтому и не нужно фанатично следовать догмам и моде.

© Fotolia / Irina84Семья на прогулке

© Fotolia / Irina84

Семья на прогулке

На этом настаивал, кстати, и сам Бенджамин Спок, который постоянно вносил изменения в новые издания своих книг.

И в любом случае доктору Споку нужно сказать спасибо. Хотя бы за то, что его книга вернула воспитание детей родителям.

Автор Кирилл Гришин, радио Sputnik

8 сентября 2020, 14:30Сказано в эфире

«Я себя убиваю»: как чувство вины разрушает нашу жизньПрактически каждому знакомо чувство вины. Почему так страшно быть «плохим» человеком, который говорит «нет», рассказала радио Sputnik психолог Ирина Ковалева.

Коротко и по делу. Только отборные цитаты в нашем Телеграм-канале.

Воспитание по методу доктора Б. Спока: плюсы и минусы

Плюсы и минусы > Психология > Воспитание по методу доктора Б. Спока: плюсы и минусы

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

Описание метода

В 1946 году вышла книга «Ребенок и уход за ним», которая сразу стала бестселлером. За 20 век было продано 50 миллионов экземпляров. Революционность авторского подхода заключалась в том, что ребенка предлагали считать личностью и учитывать его интересы. Спок предлагал не ругать детей, а договариваться с ними.

До трёхмесячного возраста младенца нужно окружать заботой и как можно чаще брать на руки. Доктор Спок подчеркивает, что для нормального развития ребенку нужен физический контакт с родителями.

После трёх месяцев наступает новый этап развития нервной системы, и младенца пора приучать к самостоятельности. Родители должны отличать капризы малыша от его потребностей, игнорировать первые и удовлетворять вторые. Поэтому с 3 месяцев пора учить младенца засыпать самостоятельно, кормить его, только когда он просит сам, оставлять одного в комнате.

Что касается запретов в более старшем возрасте, их не должно быть слишком много. Если ребенок разбрасывает игрушки по квартире, значит, у него в разгаре познавательная деятельность, не стоит ему мешать. Запрещать нужно лишь то, что опасно для жизни.

Плюсы воспитания по методу Б.Спока

Молодые мамы чувствовали себя неуверенно во все времена. И если сегодня можно найти множество методик воспитания, то в ХХ веке Спок был самым большим авторитетом в этом вопросе. Достоинства его метода:

  • Поощрение грудного вскармливания. В книге даются советы, как отвечать на критику от женщин, которые считают грудное вскармливание ненужным. Много внимания уделено правильному прикладываю младенца к груди, режиму кормлений, способам увеличения грудного молока.
  • Простые советы на все случаи жизни. Доктор учит матерей, как справляться с типичными трудностями, например, с коликами. В книге написано, что вечерний плач младенца означает, что у него болит живот, и описан способ, как ему помочь. Родители должны отличать плач из-за боли от капризов. В книге приведено несколько способов, чтобы отвлечь капризничающего ребенка. При отсутствии интернета и помощников рядом, книга была единственной возможностью для матери получить работающий совет.
  • Забота о ребенке. Педиатр призвал растить детей в любви, удовлетворять их потребности. Он писал, что детям нужно позволять быть собой, а задача родителей – принимать их такими. Это был революционный подход, так как раньше в семье существовала строгая иерархия с отцом во главе.
  • Забота о родителях. В книге автор хотел показать, что мама не должна раствориться в ребенке и забыть о себе. Хотя он пропагандировал грудное вскармливание, ничего плохого не видел и в смесях, если это удобно для мамы. Это позволяло отдохнуть без младенца или выйти на работу при необходимости.

Минусы воспитания по методу Б.Спока

В 1970-е набирало силу феминистское движение, и материнство стало не таким важным для женщин. Спока начали критиковать за излишний фрейдизм, а также за то, что он поощрял вседозволенность. Недостатки системы воспитания по Споку:

  • Доктор считал, что длительное грудное вскармливание грозит зависимостью ребенка от матери, поэтому не поощрял кормление после года. Он считал, что в этом возрасте ребенок уже не нуждается в материнском молоке и уже в 10 месяцев предлагал полностью заменить грудное молоко на коровье. Сегодня ВОЗ рекомендует грудное вскармливание
    до 2 лет
    , а многие матери кормят детей и дольше.
  • Сторонники естественного родительства критикуют эту методику за совет не сразу брать ребенка на руки, когда он плачет. Раньше считалось, что можно приучить младенца к рукам, и тогда он начнет манипулировать родителями. Последние исследования говорят, что этого не случится, наоборот, детям нужен физический контакт с родителями, особенно в первые месяцы жизни.
  • Главная претензия современных родителей к методу: обучение самостоятельному засыпанию по системе «дать проплакаться». Доктор пишет, что даже если ребенок плачет до рвоты, мама не должна помогать ему, а должна выйти из комнаты. Современные методы более гуманные: мама остаётся с малышом до засыпания, а некоторые практикуют совместный сон с ребенком.
  • Совет о принятии детей такими, какие они есть, родители поняли так, что
    не нужно ничего запрещать ребенку
    и, тем более, наказывать его. Споку пришлось уточнять и оправдываться, он не против разумных ограничений, правила и границы проведения нужны детям.
  • Педиатр рекомендовал для младенцев сон на животе. Последние исследования говорят, что такая поза увеличивает риск синдрома внезапной детской смерти и удушья. Сегодня рекомендуется укладывать малышей на спину, а голову поворачивать набок, на случай срыгивания. Голову нужно периодически поворачивать, чтобы правильно сформировался затылок.

Вывод

В конце жизни Бенджамин Спок пересмотрел свои принципы и стал рекомендовать прямо противоположное: кормить ребенка по требованию, а не по часам, часто брать его на руки. Это говорит о том, что к детям нужен мягкий подход воспитания. Мало какая мать может спокойно смотреть на кричащего ребенка и не подходить к нему.

Доктор Спок признался, что был холоден со своими сыновьями, мало обнимал и целовал их. Его жена признавалась, что в семье не было тепла, а дети вспоминали отца, как тирана. Современные исследования показывают, что самостоятельное засыпание «по Споку» нарушает привязанность между матерью и ребенком, поэтому его лучше не использовать. Дети, выращенные по этим принципам, получают психологическую травму, им сложнее доверять другим людям, в будущем они становятся более закрытыми.

Spock Primer

В этой главе предполагается, что у вас есть базовые знания Groovy и модульного тестирования. Если вы Java-разработчик, но еще не слышали о Groovy, не волнуйтесь — Groovy покажется вам очень знакомым! На самом деле, одна из главных целей дизайна Groovy состоит в том, чтобы be язык сценариев наряду с Java. Так что просто следуйте и консультируйтесь с Документация Groovy в любое время.

Цель этой главы — научить вас Споку писать реальные спецификации Спока, а также разожгите свой аппетит к большему.

Чтобы узнать больше о Groovy, посетите http://groovy-lang.org/.

Дополнительные сведения о модульном тестировании см. на странице http://en.wikipedia.org/wiki/Unit_testing.

Терминология

Давайте начнем с нескольких определений: Spock позволяет вам писать спецификации , которые описывают ожидаемые функции (свойства, аспекты), демонстрируемые интересующей системой. Система интересов может быть чем угодно между отдельным классом и целым приложение, а также называется система по спецификации (SUS) . Описание функции начинается с конкретного снимок SUS и его сотрудников; этот снимок называется устройством функции .

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

Imports

 import spock.lang.* 

Пакет spock.lang содержит наиболее важные типы для написания спецификаций.

Спецификация

 класс MyFirstSpecification расширяет спецификацию {
  // поля
  // методы фиксации
  // методы признаков
  // вспомогательные методы
} 

Спецификация представлена ​​в виде класса Groovy, который наследуется от spock.lang.Specification . Название спецификации обычно относится к системе или работе системы, описанной в спецификации. Например, CustomerSpec , h364VideoPlayback и ASSpaceship AttackedFromTwoSides — все разумные имена для спецификации.

Класс Спецификация содержит ряд полезных методов написания спецификаций. Кроме того, он указывает JUnit запустите спецификацию с помощью Sputnik , JUnit runner Спока. Благодаря Sputnik спецификации Spock могут запускаться большинством современных Java IDE и инструменты сборки.

Поля

 def obj = новый ClassUnderSpecification()
def collaborator() 

Поля экземпляра — хорошее место для хранения объектов, принадлежащих фикстуре спецификации. Хорошей практикой является инициализируйте их прямо в момент объявления. (Семантически это эквивалентно их инициализации в самом начало метод setup() .) Объекты, хранящиеся в полях экземпляра, , а не совместно используются методами функций. Вместо этого каждый метод функции получает свой собственный объект. Это помогает изолировать методы признаков друг от друга, что часто желанная цель.

 @Shared res = new VeryExpensiveResource() 

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

@Общее поле . Снова лучше всего инициализировать поле прямо в месте объявления. (Семантически это эквивалентно инициализации поле в самом начале метода setupSpec() .)

 static final PI = 3.141592654 

Статические поля следует использовать только для констант. В противном случае общие поля предпочтительнее, потому что их семантика с относительно совместного использования более четко определены.

Fixture Methods

 def setup() {} // запускать перед каждым методом функции
def cleanup() {} // запускаем после каждого метода функции
def setupSpec() {} // запускаем перед первым методом функции
def cleanupSpec() {} // запускаем после последнего метода функции 

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

setup() и cleanup() . методы предназначены для. Иногда для методов объектов имеет смысл совместно использовать фикстуру, что достигается с помощью полей вместе с методами setupSpec() и cleanupSpec() . Все методы фиксации являются необязательными.

Примечание. Методы setupSpec() и cleanupSpec() не могут ссылаться на поля экземпляра.

Методы функций

 def "помещение элемента в стек"() {
  // здесь идут блоки
} 

Функциональные методы являются сердцевиной спецификации. Они описывают функции (свойства, аспекты), которые вы ожидаете получить. найти в системе по спецификации. По соглашению, методы объектов называются строковыми литералами. Попробуйте выбрать хорошие имена для ваших методов функций, и не стесняйтесь использовать любые символы, которые вам нравятся!

Концептуально метод признаков состоит из четырех этапов:

  1. Настроить приспособление функции

  2. Обеспечьте стимул системе в соответствии со спецификацией

  3. Опишите ответ ожидаемый от системы

  4. Очистить крепление функции

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

Блоки

Spock имеет встроенную поддержку для реализации каждой из концептуальных фаз метода признаков. С этой целью характеризовать методы структурированы в так называемые блоки

. Блоки начинаются с метки и продолжаются до начала следующего блока. или конец метода. Существует шесть типов блоков: установка , когда , затем , ожидать , очистка и где блока. Любые операторы между началом метода и первым явным блоком принадлежат неявному блоку 9.0031 настройка блок.

Метод объекта должен иметь хотя бы один явный (т. е. помеченный) блок — фактически наличие явного блока что делает метод методом признаков. Блоки делят метод на отдельные разделы и не могут быть вложенными.

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

Блоки настройки
 Настройка:
стек защиты = новый стек ()
def elem = "push me" 

В блоке setup вы выполняете любую работу по настройке для описываемой функции. Ему не может предшествовать другие блоки и не могут повторяться. Блок setup не имеет особой семантики. Настройка : метка необязательный и может быть опущен, что приводит к блоку неявного setup . : Метка является псевдонимом для настройка: , и иногда приводит к более читаемому описанию метода признаков (см. Спецификации как документацию).

Когда и Тогда Блоки
 когда: // стимул
then: // response 

Блоки , когда и , затем всегда встречаются вместе. Они описывают стимул и ожидаемую реакцию. Тогда как , когда блоки могут содержать произвольный код, затем блоки ограничены условиями , исключительными условиями , взаимодействия , и определения переменных. Метод признаков может содержать несколько пар когда-то блоков.

Условия

Условия описывают ожидаемое состояние, как утверждения JUnit. Однако условия записываются как простые логические значения. выражения, устраняя необходимость в API-интерфейсе утверждений. (Точнее, условие может также производить нелогическое значение, которое затем будет оцениваться в соответствии с истинностью Groovy.) Давайте посмотрим на некоторые условия в действии:

 когда:
stack.push(элемент)
затем:
!стек.пустой
стек.размер() == 1
stack.peek() == элемент 

Наконечник

Старайтесь, чтобы количество условий для каждого метода признаков было небольшим. Хорошим ориентиром является от одного до пяти условий. Если вы если у вас больше этого, спросите себя, указываете ли вы сразу несколько несвязанных функций. Если ответ да, разбейте метод признаков на несколько более мелких. Если ваши условия отличаются только своими значениями, рассмотрите возможность использования таблица данных.

Какую обратную связь предоставляет Спок, если условие нарушено? Попробуем изменить второе условие на стек.размер() == 2 . Вот что получаем:

 Условие не выполнено:
стек.размер() == 2
| | |
| 1 ложь
[нажми меня] 

Как видите, Spock фиксирует все значения, полученные во время оценки условия, и представляет их в удобном виде. усваиваемая форма. Красиво, не так ли?

Неявные и явные условия

Условия являются важным компонентом , затем блоков и ожидают блоков. За исключением вызовов методов void и выражения, классифицируемые как взаимодействия, все выражения верхнего уровня в этих блоках неявно обрабатываются как условия. Чтобы использовать условия в других местах, вам нужно обозначить их с помощью ключевого слова Groovy assert:

 def setup() {
  стек = новый стек()
  утверждать стек.пусто
} 

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

Условия исключения

Условия исключения используются для описания того, что блок when должен генерировать исключение. Они определяются с помощью метод throw() , передавая ожидаемый тип исключения. Например, для описания извлечения из пустого стека должен выдать EmptyStackException , вы можете написать следующее:

 когда:
стек.поп()
затем:
брошено (EmptyStackException)
stack.empty 

Как видите, за условиями исключения могут следовать другие условия (и даже другие блоки). Это особенно полезно для указания ожидаемого содержимого исключения. Чтобы получить доступ к исключению, сначала привяжите его к переменной:

 когда:
стек.поп()
затем:
def e = брошено (EmptyStackException)
e.cause == null 

В качестве альтернативы вы можете использовать небольшое изменение приведенного выше синтаксиса:

, когда:
стек.поп()
затем:
EmptyStackException e = выброшено ()
e. cause == null 

Этот синтаксис имеет два небольших преимущества: во-первых, переменная исключения имеет строгий тип, что облегчает IDE предлагать завершение кода. Во-вторых, условие читается как предложение («тогда генерируется EmptyStackException»). Обратите внимание, что если тип исключения не передается в метод throw() , он выводится из типа переменной слева сторона.

Иногда нам нужно сообщить, что исключение должно вызываться , а не . Например, попробуем выразить, что HashMap должен принимать нулевой ключ :

 def «HashMap принимает нулевой ключ» () {
  настраивать:
  карта защиты = новая HashMap()
  map.put(ноль, "элемент")
} 

Это работает, но не раскрывает цель кода. Кто-то только что вышел из здания, прежде чем он закончил? реализации этого метода? Ведь где условия? К счастью, мы можем сделать лучше:

 def "HashMap принимает нулевой ключ" () {
  настраивать:
  карта защиты = новая HashMap()
  когда:
  map. put(ноль, "элемент")
  затем:
  notThrown(NullPointerException)
} 

Используя notThrown() , мы ясно даем понять, что, в частности, NullPointerException не должно вызываться. (В соответствии с контракт Map.put() , это было бы правильно для карты, которая не поддерживает ключи null .) Однако, метод также завершится ошибкой, если возникнет любое другое исключение.

Взаимодействия

В то время как условия описывают состояние объекта, взаимодействия описывают, как объекты взаимодействуют друг с другом. Взаимодействиям посвящена целая глава, поэтому здесь мы приводим лишь краткий пример. Предположим, мы хотим описать поток событий от издателя к его подписчикам. Вот код:

 def "события публикуются для всех подписчиков"() {
  def subscriber1 = фиктивный (подписчик)
  def subscriber2 = фиктивный (подписчик)
  def издатель = новый издатель ()
  издатель.добавить(подписчик1)
  издатель. добавить(подписчик2)
  когда:
  издатель.fire("событие")
  затем:
  1 * subscriber1.receive("событие")
  1 * subscriber2.receive("событие")
} 
Блоки ожидания

Блок ожидания более ограничен, чем блоки и , поскольку он может содержать только определения условий и переменных. Это полезно в ситуациях, когда более естественно описать стимул и ожидаемую реакцию в одном выражении. Например, сравните следующие две попытки описать метод Math.max() :

, когда:
защита x = Math.max (1, 2)
затем:
х == 2 
 ожидать:
Math.max(1, 2) == 2 

Хотя оба фрагмента семантически эквивалентны, второй явно предпочтительнее. Как правило, используйте когда-то для описания методов с побочными эффектами, а ожидают, что опишет чисто функциональные методы.

Наконечник

Используйте методы Groovy JDK, такие как any() и every() для создания более выразительных и лаконичных условий.
Блоки очистки
 установка:
файл защиты = новый файл ("/некоторые/путь")
файл.createNewFile()
// ...
очистка:
файл.удалить() 

За блоком очистки может следовать только блок where , и он не может повторяться. Как и метод очистки , он используется для освобождения любых ресурсов, используемых методом функции, и запускается, даже если (предыдущая часть) метод функции произвел исключение. Как следствие, блок очистки должен быть закодирован с защитой; в худшем случае он должен изящно обрабатывать ситуацию, когда первый оператор в методе объекта вызвал исключение, а все локальные переменные по-прежнему имеют свои значения по умолчанию.

Наконечник

Безопасный оператор разыменования Groovy ( foo?.bar() ) упрощает написание защитного кода.

Спецификации уровня объекта обычно не нуждаются в методе очистки , поскольку единственный ресурс, который они потребляют, — это память, которая автоматически утилизируется сборщиком мусора. Однако более грубые спецификации могут использовать очистку . блокировать, чтобы очистить файловую систему, закрыть соединение с базой данных или отключить сетевую службу.

Наконечник

Если спецификация разработана таким образом, что все ее методы функций требуют одних и тех же ресурсов, используйте метод очистки() ; в противном случае предпочтите очистку блоков. Тот же компромисс применяется к методам setup() и блокам setup() .
Где Блоки

A где блок всегда идет последним в методе и не может повторяться. Он используется для написания методов функций, управляемых данными. Чтобы дать вам представление о том, как это делается, взгляните на следующий пример:

 def "вычисление максимума из двух чисел"() {
  ожидать:
  Math.max(a, b) == c
  где:
  а << [5, 3]
  б << [1, 9]
  в << [5, 9]
} 

Этот блок , где эффективно создает две «версии» метода признаков: одну, где a равно 5, b равно 1 и c равно 5, и еще один, где a равен 3, b равен 9, а c равен 9.

Блок , где , будет дополнительно объяснен в главе «Тестирование, управляемое данными».

Вспомогательные методы

Иногда методы функций становятся большими и/или содержат много дублированного кода. В таких случаях имеет смысл ввести один или несколько вспомогательных методов. Два хороших кандидата на роль вспомогательных методов — это логика настройки/очистки и сложные условия. Вычесть первое из них несложно, поэтому давайте посмотрим на условия:

 def "предлагаемый ПК соответствует предпочтительной конфигурации"() {
  когда:
  def pc = shop.buyPc()
  затем:
  pc.vendor == "Солнечный"
  pc.clockRate >= 2333
  шт. ОЗУ >= 4096
  pc.os == "Линукс"
} 

Если вы разбираетесь в компьютерах, предпочитаемая вами конфигурация ПК может быть очень подробной, или вы можете захотеть сравнить предложения из разных магазинов. Итак, выделим условия:

 def "предлагаемый ПК соответствует предпочтительной конфигурации"() {
  когда:
  def pc = shop. buyPc()
  затем:
  matchPreferredConfiguration(ПК)
}
def matchPreferredConfiguration(pc) {
  pc.vendor == "Солнечный"
  && pc.clockRate >= 2333
  && pc.ram >= 4096
  && pc.os == "Линукс"
} 

Новый вспомогательный метод matchPreferredConfiguration() состоит из одного логического выражения, результат которого возвращается. (Ключевое слово return является необязательным в Groovy.) Это нормально, за исключением того, как теперь представлено неадекватное предложение:

 Условие не выполнено:
matchPreferredConfiguration(ПК)
| |
false ... 

Не очень полезно. К счастью, мы можем сделать лучше:

 недействительные совпаденияPreferredConfiguration(pc) {
  утверждать pc.vendor == "Солнечный"
  утверждать pc.clockRate >= 2333
  утверждать pc.ram >= 4096
  утверждать pc.os == "Linux"
} 

Вынося условия во вспомогательный метод, необходимо учитывать два момента. Во-первых, неявные условия должны быть превращены в явные условия с помощью ключевого слова assert . Во-вторых, вспомогательный метод должен иметь возвращаемый тип void . В противном случае Spock может интерпретировать возвращаемое значение как невыполнимое условие, а это не то, что нам нужно.

Как и ожидалось, улучшенный вспомогательный метод точно сообщает нам, что не так:

 Условие не выполнено:
утверждать pc.clockRate >= 2333
       | | |
       | 1666 ложь
       ... 

И последний совет: хотя повторное использование кода, как правило, хорошо, не заходите слишком далеко. Имейте в виду, что использование приспособления а вспомогательные методы могут усилить связь между методами признаков. Если вы повторно используете слишком много или неправильный код, вы в конечном итоге со спецификациями, которые являются хрупкими и трудно развиваемыми.

Спецификации как документация

Хорошо написанные спецификации являются ценным источником информации. Специально для таргетинга на спецификации более высокого уровня более широкой аудитории, чем просто разработчики (архитекторы, эксперты в предметной области, заказчики и т. д.), имеет смысл предоставить больше информацию на естественном языке, чем просто названия спецификаций и функций. Таким образом, Спок предоставляет способ прикрепить текстовые описания к блокам:

 setup: "открыть соединение с базой данных"
// здесь идет код 

Отдельные части блока могут быть описаны с помощью и: :

 настройка: "открыть соединение с базой данных"
// код идет сюда
и: "запустить таблицу клиентов"
// код идет сюда
и: "заполнить таблицу продуктов"
// код идет сюда 

Метка и: , за которой следует описание, может быть вставлена ​​в любую (верхнюю) позицию метода объекта, без изменение семантики метода.

В Behavior Driven Development функции, ориентированные на клиента (так называемые истории ) описываются в формате «данный-когда-тогда». Спок напрямую поддерживает этот стиль спецификации с помощью дано: метка:

 дано: «пустой банковский счет». 
// ...
когда: "на счет зачислено $10"
// ...
то: "баланс аккаунта $10"
// ... 

Как отмечалось ранее, задано: — это просто псевдоним для setup: .

Описания блоков присутствуют не только в исходном коде, но также доступны для среды выполнения Spock. Планируемое использование описания блоков представляют собой расширенные диагностические сообщения и текстовые отчеты, одинаково понятные всем заинтересованным сторонам.

Extensions

Как мы видели, Spock предлагает множество функций для написания спецификаций. Однако всегда приходит время когда нужно что-то еще. Поэтому Spock предоставляет механизм расширения на основе перехвата. Расширения активируется аннотациями, называемыми директивами . В настоящее время Spock поставляется со следующими директивами:

@Timeout

Устанавливает тайм-аут для выполнения функции или метода фиксации.

@Игнорировать

Игнорирует метод объекта.

@IgnoreRest

Игнорирует все методы объектов, не содержащие эту аннотацию. Полезно для быстрого запуска только одного метода.

@FailsWith

Ожидается внезапное завершение метода объекта. @FailsWith имеет два варианта использования: во-первых, для документирования известных ошибок, которые не могут быть решаться немедленно. Во-вторых, заменить условия исключения в некоторых крайних случаях, когда последнее невозможно. используется (например, указание поведения условий исключения). Во всех остальных случаях предпочтительны исключительные условия.

Чтобы узнать, как реализовать собственные директивы и расширения, перейдите к главе «Расширения».

Сравнение с JUnit

Хотя Spock использует другую терминологию, многие его концепции и функции вдохновлены JUnit. Вот грубый сравнение:

Спок Юнит

Спецификация

Класс испытаний

настройка()

@До

очистка()

@После

setupSpec()

@BeforeClass

очисткаSpec()

@AfterClass

Особенность

Тест

Метод признаков

Метод испытаний

Функция, управляемая данными

Теория

Состояние

Утверждение

Исключительное состояние

@Test(ожидаемый=…​)

Взаимодействие

Имитация ожидания (например, в Mockito)

java — имитация статического метода в spock

спросил

Изменено 1 год, 1 месяц назад

Просмотрено 856 раз

Я пытаюсь смоделировать статический метод с mockito-inline в спок

 дано:
    try(MockedStatic mockedStatic = Mockito. mockStatic(CryptoUtils.class)){
                mockedStatic.when({ -> CryptoUtils.decryptWithPrefixIV(любой() как String, любой() как String)}).thenReturn(word)
            }
 

Но это не работает --- "попробовать" с ресурсами не поддерживается в текущей версии

Groovy 3+ поддерживает try..with..resources: ARM Try with resources

and spock pull Groovy 3: См. https://spockframework.org/

testCompile "org.spockframework:spock-core:2.0-groovy-3.0"

С другой стороны, mockStatic активен только в тот момент, когда он закрыт, что не соответствует блокам Спока. Таким образом, использование блока очистки может быть предпочтительным

Как и метод очистки, он используется для освобождения любых ресурсов, используемых методом объектов, и запускается, даже если (предыдущая часть) метод объектов вызвал исключение. Как следствие, блок очистки должен быть закодирован с защитой; в худшем случае он должен изящно обработать ситуацию, когда первый оператор в методе объекта вызвал исключение, а все локальные переменные по-прежнему имеют значения по умолчанию.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *