Мы используем Rhino Mocks для выполнения некоторого модульного тестирования и должны издеваться над двумя интерфейсами. На объекте реализован только один интерфейс, а другой реализуется динамически с использованием аспектно-ориентированного подхода. Есть ли простой способ объединить эти два интерфейса динамически, чтобы можно было создать макет и методы, заглушенные для обоих интерфейсов?
Как объединить два интерфейса при создании mocks?
Ответ 1
Макет с несколькими интерфейсами с использованием Rhino Mocks может быть сгенерирован следующим образом:
var mocker = new MockRepository();
var mock = mocker.CreateMultiMock<IPrimaryInterface>(typeof(IFoo), typeof(IBar));
mocker.ReplayAll();
Ответ 2
Использование Rhino Mocks
var mock = MockRepository.GenerateMock<IFirst, ISecond>();
mock.Stub(m => m.FirstProperty).PropertyBehavior();
((ISecond)mock).Stub(k=> k.SecondProperty).PropertyBehavior();
Найден и использовал информацию из http://www.richard-banks.org/2010/08/mocking-comparison-part-11-multiple.html
Ответ 3
Это не динамический, но, безусловно, простой: создайте интерфейс в своей тестовой сборке, который ничего не делает, кроме реализации двух других интерфейсов:
internal interface ICombined : IFirstInterface, ISecondInterface {}
Затем макет ICombined
.