Обновить
26
ApeCoder@ApeCoder

Разработчик

6
Подписчики
Отправить сообщение
Вы привели тест который ничего не тестирует вовсе. Ваш код просто создаёт мок-сервис и вызывает его методы

Нет. subject.changeName вызывает метод SUT


надо обязательно проверять — был ли вызван метод мок-сервиса?

Иначе мы не сможет полноценно протестировать метод у которого внутри вызыватся методы сервиса.

Можем. Надо думать требованиями а не реализацией.


Всё — тест проходит — но это неправильно!

  1. Если неправильно, надо надо повторить Red-Green-Refactor
  2. Надо писать простейшую реализацию сначала. Я бы сначала проверил поведение при отсутствии человека в базе

Прочитайте, пожалуйста книжку про юнит тесты. Например http://xunittestpatterns.com

Но тогда и для такого тестируемого метода ваши тесты пройдут нормально:

По классическому TDD мы и должны сначала написать такой метод. А потом написать красный тест.

[Test]
void changeName_ShouldSetNewName()
    var service = new InMemoryService();
    service.addRecord(recordId, OldName);
    subject.changeName(service, recordID, NewName);
    service.getName(recordID).should().be(NewName);
}

Заметьте, что здесь мы абстрагируемся от того, каким именно споcобом vмы работаем с сервисом. Может быть, в будущем появится какой-то еще метод для более удобной работы с именем и от этого ничего ровно не изменится — требование сформулировано в абстрактной форме.


Но, так как метод не вносит вообще никакой собственной ценности. Я бы просто сделал inline method :)

Начало Метода

Конец Метода.

Заметим еще что вы думаете тестированием реализации, попробуйте думать интерфейсом — какие требования к интерфейсу метода? И по ним построить тесты.

Передать целостную инмемори реализацию сервиса.


Нам не надо знать, был ли получен или нет токен. Нам надо знать, что работа с сервисом происходит корректно. То есть передать такой сервис с которым можно работать только получив токен. Соответственно, тест не будет проверять вызван ли метод. Он будет проверять "или метод вызван или токен не нужен"

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

Вероятность "зарезать случайно" на преступника, целенаправленно желающего кого-то зарезать, никак не натягивается.

Натягивается. Только господь бог исполняет свои замыслы с вероятностью 100% (да и того, по правде говоря, нет). На остальных влияют разные обстоятельства. Например на ту секунду когда он стал преступником и у него возник замысел у него не оказалось ножа или нож не пробил пуховик жертвы.


Регламентируется длина клинка и наличие упора

Первая попавшаяся ссылка говорит что не только. В госты мне смотреть в лом

Почему нужно ограничивать именно ножи именно с определенными параметрами?

Возможно дело в вероятности, вероятность зарезать ножом из хорошей стали больше чем из плохой или топором (потому, что топор не все таскают с собой). Для кухонных нужд тоже нужно что-то использовать => надо какие-то ножи разрешать.

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

Разговоры о том, что наличные способствуют преступности — бред сивой кобылы.

Почему?


Тогда нужно запрещать ножи, спиртные напитки и комиксы.

Во-первых, не обязательно запрещать то, что способствует преступности.


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

Кто такие адепты? Вот например известная книжка http://xunitpatterns.com/Principles%20of%20Test%20Automation.html читать с use the front door first. Вы не путаете покрытие приватных методов с тестированием реализации?


И их невозможно написать без дублирования требований.

Тесты должны рефакториться так же как и код.

Юнит-тесты знают о деталях реализации, тем самым нарушая инкапсуляцию и являясь антипаттерном.

Юнит тесты знают только об итерфейсе юнита.


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

При изменении надо следить чтобы другие требования не нарушались.


Если же код правится, то эти тесты падают, и их тоже приходится править.

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


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

https://testing.googleblog.com/2015/04/just-say-no-to-more-end-to-end-tests.html


Опять же при 100% покрытии крупный рефакторинг практически невозможен. — нужно будет выкинуть все эти тесты

Отрефакторить. Требования никуда не деваются — меняется только форма их представления

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


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

Как говорит одна моя хорошая знакомая: нет пошлых языков, есть пошлые уши.

Эту пошлость я слышал еще в детстве :). Я с ней несогласен.


В словах «зародыш», «завязь», «недоразвитое существо» уничижительного смысла нет.

Мне кажется, что в слове недоразвитый есть некий уничижительный оттенок:


НЕДОРАЗВИ́ТЫЙ, недоразвитая, недоразвитое; недоразвит, недоразвита, недоразвито. Остановившийся в росте раньше времени; не достигший полного развития. Недоразвитый мозг.


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

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

Да при чём тут вообще сравнение самостоятельности котёнка и личинки

Вы же сами сказали:


абсолютно несамостоятельное нечто

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

Я живу среди большинства. Модель большинства в вашей голове как относится к тому, чтобы их детей называли личинками?


во-вторых вы были этим большинством избраны, или что?

Нет, конечно :)

Я думаю, у гиктаймс аудитория смещена в ссторону молодых тезнозадротов-мужчин (в хорошем смысле слова — сам таким был лет 20 назад). Не знаю есть ли у вас дети, но если нет и они появятся, то вы скорее всего почувствуете эти врожденные программы. :)


Я даже склонен думать

Это вообще не про "думать"

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


Другими словами не ищите кучу говна там, где её нет. Если вам чем-то не нравятся личинки, то это ещё не значит, что они плохие.

Речь не идет обо мне, а о большинстве. Для большинства характерно представление о личинке как о чем-то противном. Также именно слово личинка (а например не опарыш) используется в инетах для обозначение ребенка в негативном контексте.

Вы моё сообщение читали?

Да.
Ok. Вы признаете, что "личинка" использовалось вами уничижительном смысле.


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

Смысл слова «личинка» очень сильно зависит от контекста, не так ли?

Не так, вы действительно не понимаете что "котенок" и "личника" воспринимается по разному? Вы действительно не знаете, что именно слово "личинка" используется с инетах в уничижительном смысле в отношении детей?

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

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


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


Получаем что есть существа которые:


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

Следовательно


  • о них надо заботиться
  • надо уравновесить создаваемую кучу проблем каким-то другим чувством (умиление, страх за будущее, любовь)

Именно поэтому люди о детях заботятся больше чем о взрослых


P.S. Если человек искренне думает, что слово "личинка" не имеет уничижительного оттенка (и это не троллинг, сознательный или бессознательный), то ему ИМХО нужны подсказки как Шелдону типа "sarkasm" чтобы социальная дизадаптированность не нанесла ему ущерба ;). Представляю что будет, если он спросит своего начальника, например, "А сколько вашей младшей личинке лет?"

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность