See this blog post for when to use Protocol and when to use Behaviour:
I am really glad this now exists because I did such a poor job of explaining why I wanted this PR: Proposal: implementation of struct: option for defmock by ityonemo · Pull Request #91 · dashbitco/mox · GitHub
But your approach is much better!
Thank you for your nice words!
You may find this library useful as well
(I’m going to open another thread for this library later for sure.)