Macroexpand не может видеть макросы, представленные macrolet.Они существуют только во время компиляции, а macroexpand (при непосредственном вызове) работает во время выполнения.Ваш тест работает только потому, что вы определили when
так же, как и clojure.core.Но macrolet решит вашу проблему, если вы не хотите расширяться во время выполнения.