Как использовать PostSharp с MOQ?

Мы пытаемся использовать PostSharp, точнее OnMethodInvocationAspect, для перехвата методов класса.

Код работает нормально, но при тестировании с MOQ он, похоже, не работает с моими макетами.

Если я удалю аспекты, все тесты пройдут успешно. Но если я снова включу аспекты, ожидания от макетов MOQ не оправдаются.

Вот фрагмент одного из наших модульных тестов:

this.sgtrMock.Setup(r => r.RetrieveCurrentTaxes()).Returns(new[] {tax1, tax2});
this.service.LoadServiceTaxes();
this.sgtrMock.Verify(r => r.RetrieveCurrentTaxes(), Times.Once());

Любые идеи о том, что может происходить?


person Mozair Carmo    schedule 14.10.2009    source источник
comment
Можете ли вы опубликовать код вашего аспекта? Есть одна загвоздка — объекты Moq — это не перехваченные объекты, а прокси.   -  person Karel Frajták    schedule 16.09.2011
comment
Эй, Карел, извините за долгую задержку с ответом... у нас была эта проблема довольно давно, и это просто техническая невозможность. Как вы сказали, MOQ создает прокси, которые в конечном итоге обходят аспекты PostSharp... В итоге мы провели рефакторинг класса, чтобы он не включал аспект, и переместили его в другое место (где нам не нужно было насмехаться над ожиданиями).   -  person Mozair Carmo    schedule 30.10.2011
comment
Нет проблем, я разместил свой комментарий в качестве ответа. Пожалуйста, закройте этот вопрос, пометив его, спасибо.   -  person Karel Frajták    schedule 30.10.2011


Ответы (1)


Есть одна загвоздка — объекты Moq — это не перехваченные объекты, а прокси.

person Karel Frajták    schedule 30.10.2011