Является ли ваша реализация "аспекта" классом, реализующим ICallHandler
(или очень похожим IInterceptionBehavior
в Unity 2.0) и уже добавленным в конвейер выполнения перехваченного объекта?
Если это так, вы можете протестировать его отдельно, как обычно. То, что вы тестируете, это метод Invoke
- вызовите его с помощью mock, созданного для IMethodInvocation
, с настройкой, чтобы иметь состояние вашего объекта перед вызовом аспекта, и с помощью GetNextHandlerDelegate
, чтобы установить mock, чтобы объект представлял ваш перехваченный вызов объекта.
Затем вы можете утверждать:
- на вашей цели делегата, если это необходимо
звонки сделаны - т.е.
аспект нарушает / не нарушает
выполнение правильно, будь то вызов
аргументы были должным образом изменены и т. д.
- на
Invoke
результат (IMethodReturn
объект) - то есть проверить, является ли
возвращаемый результат был правильно изменен,
было ли выброшено исключение и т. д.