Как издеваться над функцией .map? - PullRequest
0 голосов
/ 16 июня 2020

Допустим, мне нужно поиздеваться над этим:

List().map(doSomething)

Я пытался найти ответ на inte rnet, но не нашел решения

1 Ответ

4 голосов
/ 16 июня 2020

Mocking .map не имеет смысла - вы работаете с чистыми данными, поэтому, если вы хотите изменить результат, вы меняете ввод. Это было бы похоже на издевательство над .substr или .toLowerCase в String.

Тем более, что .map, .flatMap и друзья - это интерфейсы с контрактами - вы бы не издевались над .equals и .hashcode потому что вам придется переопределить контракты с имитирующим API, где передача данных даст вам это бесплатно.

И это то, что List, Set, Free, IO и т. д. c are - данные. Вы не издеваетесь над данными, вы издеваетесь над поведением - объектами с управляемым состоянием и побочными эффектами. Поэтому никто не описал, как это сделать.

...