Проблема в том, что функция idset
является закрытой в вашем пространстве имен источника.В тестовом файле вы интернируете его в тестовом пространстве имен.Теперь у вас есть два разных переменных, которые указывают на одну и ту же функцию:
#'twitter-utils.core/idset
#'twitter-utils.test.core/idset
В provided
вы переопределяете второй переменный, чтобы указать на обязательную функцию.Однако функция followers-minus-friends
по-прежнему относится к первому варианту.Это не переопределяется, поэтому вы получаете оригинальную функцию.
Распространенная идиома для маршрутизации вокруг объявлений private
заключается в использовании полного имени переменной, как указано выше.Так что вы ожидаете, что это сработает:
(fact (followers-minus-friends ...name...) => ["Dude"]
(provided (#'twitter-utils.core/idset show-followers ...name...) => #{1 2 3}
(#'twitter-utils.core/idset show-friends ...name...) => #{1 2}
(userinfos #{3}) => [{:screen_name "Dude"}]))
Хотя это не так.Я считаю, что ошибка в Midje.По крайней мере, я не могу сообразить, какой вред поддержит это.Я отправлю тикет.
В таком виде, вам нужно сделать idset
публичным.