Вы не можете надежно проверить на равенство любую функцию или текущие вычисления, поэтому с:
- Фьючерсы
- Задача
- Бесплатные монады
- DBIO
- Типы функций
просто забудьте об использовании на них маршеров (как для утверждений, так и для насмешек).
Для утверждений единственная надежная вещь, которую вы можете сделать, - запустить ее / материализовать результат и отложить утверждение до получения какого-либо фактического значения.
Ваш код не выполняется, потому что в вашем макете вы сравниваете какое-то значение Future (которое, опять же, вы не можете надежно сравнивать с и имитирует внутренне, используя некоторое значение ==
, чтобы узнать, наступил ли сейчас момент для возврата имитированного значения).
Поэтому вместо этого попробуйте принять любое значение
(b.doSomethingElse _).expects(*).returning(Future.successful(result))
если в вашем случае это неприемлемо, вы можете заменить expects(*)
на что-то вроде expects(where(future => Await.result(future) == something))
.