как провести юнит-тест AOP? - PullRequest
3 голосов
/ 05 мая 2010

Я использую Unity для AOP, кто-нибудь может дать мне представление о том, как их тестировать?

1 Ответ

1 голос
/ 14 октября 2010

Является ли ваша реализация "аспекта" классом, реализующим ICallHandler (или очень похожим IInterceptionBehavior в Unity 2.0) и уже добавленным в конвейер выполнения перехваченного объекта?

Если это так, вы можете протестировать его отдельно, как обычно. То, что вы тестируете, это метод Invoke - вызовите его с помощью mock, созданного для IMethodInvocation, с настройкой, чтобы иметь состояние вашего объекта перед вызовом аспекта, и с помощью GetNextHandlerDelegate, чтобы установить mock, чтобы объект представлял ваш перехваченный вызов объекта.

Затем вы можете утверждать:

  • на вашей цели делегата, если это необходимо звонки сделаны - т.е. аспект нарушает / не нарушает выполнение правильно, будь то вызов аргументы были должным образом изменены и т. д.
  • на Invoke результат (IMethodReturn объект) - то есть проверить, является ли возвращаемый результат был правильно изменен, было ли выброшено исключение и т. д.
...