У меня есть метод (который является частью IMyInteface) как это:
interface IMyInterface
{
void MyMethod(IList<Foo> list);
}
У меня есть ClassUnderTest:
class ClassUnderTest
{
IMyInterface Bar {get; set;}
bool AMethod()
{
var list = new List<Foo>();
Bar.MyMethod(list);
return list.Count()>0;
}
Мой Тест с Насмешками Носорога похож на это:
var mocks = new MockRepository();
var myMock = mocks.StrictMock<IMyInterface>();
var myList = new List<Foo>();
var cUT = new ClassUnderTest();
cUT.Bar = myMock;
myMock.MyMethod(myList);
//How can I add some items to myList in the mock?
mocks.Replay(myMock);
var result = cUt.AMethod();
Assert.AreEqual(True, result);
Как я могу теперь добавить некоторые объекты к myList в насмешке?
Попробуйте так:
myMock.Stub(methodInv => methodInv.MyMethod(new List<Foo>()).IgnoreArguments()
.WhenCalled(invocation => (invocation.Arguments[0] as IList<foo>).Add(new Foo());
Итак, первая лямбда-функция включает метод; вторая определяет, что происходит в методе.
Я еще не тестировал это, так что дайте мне знать, если это неправильно!