Просто используйте Ограничения аргумента
Ограничения аргумента также определяют сигнатуру метода путем указания типов аргументов.Вот почему они не могут быть опущены.
mock.Expect(x => x.MapMe(Arg<ClassB>.Is.Anything).Return(resultB);
mock.Expect(x => x.MapMe(Arg<ClassA>.Is.Anything).Return(resultA);
РЕДАКТИРОВАТЬ:
Я полагаю, другая проблема, с которой вы столкнулись - вы издевались BigClass
без поддержки интерфейса, поэтому, очевидно, RhinoMocks не позволяет устанавливать ожидания на такой насмешке,Так что просто абстрагируйте BigClass
с помощью интерфейса и макета на его основе:
public interface IMapper
{
ClassB MapMe(ClassA entity);
ClassA MapMe(ClassB entity);
}
public class BigClass : IMapper
[Test]
public void MapperTest()
{
// !!! Below I've used WhenCalled() to show you that correct
// expectation is called based on argument type, just see in debugger
IMapper mapperMock = MockRepository.GenerateMock<IMapper>();
mapperMock.Expect(x => x.MapMe(Arg<ClassA>.Is.Anything))
.WhenCalled((mi) =>
{
Debug.WriteLine("MapMe - ClassA parameter");
})
.Return(null /*TODO: return correct instance*/);
mapperMock.Expect(x => x.MapMe(Arg<ClassB>.Is.Anything))
.WhenCalled((mi) =>
{
Debug.WriteLine("MapMe - ClassB parameter");
})
.Return(null /*TODO: return correct instance*/);
var resultB = mapperMock.MapMe(new ClassA());
var resultA = mapperMock.MapMe(new ClassB());
// TODO: Asserts
}