C# 如何在Rhino Mocks中将项目添加到列表中

C# 如何在Rhino Mocks中将项目添加到列表中,c#,rhino-mocks,C#,Rhino Mocks,我有这样的方法(这是IMyInteface的一部分): interface IMyInterface { void MyMethod(IList<Foo> list); } var mocks = new MockRepository(); var myMock = mocks.StrictMock<IMyInterface>(); var myList = new List<Foo>(); var cUT = new ClassUnderTes

我有这样的方法(这是IMyInteface的一部分):

interface IMyInterface
{
  void MyMethod(IList<Foo> list);
}
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);
接口IMyInterface
{
作废MyMethod(IList列表);
}
我有一个被测试的班级:

class ClassUnderTest  
{  
  IMyInterface Bar {get; set;}

  bool AMethod()  
  {
    var list = new List<Foo>();
    Bar.MyMethod(list);

    return list.Count()>0;
}
测试中的类
{  
imy接口条{get;set;}
bool-AMethod()
{
var list=新列表();
Bar.MyMethod(列表);
返回list.Count()>0;
}
我对Rhino Mock的测试如下所示:

interface IMyInterface
{
  void MyMethod(IList<Foo> list);
}
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);
var mocks=new MockRepository();
var myMock=mocks.StrictMock();
var myList=新列表();
var cUT=new ClassUnderTest();
cUT.Bar=myMock;
myMock.MyMethod(myList);
//如何在模拟中向myList添加一些项目?
mocks.Replay(myMock);
var结果=cUt.AMethod();
断言.AreEqual(真,结果);
现在如何在模拟中向myList添加一些项目?

试试以下方法:

myMock.Stub(methodInv => methodInv.MyMethod(new List<Foo>()).IgnoreArguments()
    .WhenCalled(invocation => (invocation.Arguments[0] as IList<foo>).Add(new Foo());
myMock.Stub(methodInv=>methodInv.MyMethod(new List()).IgnoreArguments()
.WhenCalled(invocation=>(invocation.Arguments[0]作为IList).Add(new Foo());
因此,第一个lambda函数启用该方法;第二个函数指定该方法中发生的事情


我还没有测试过这个,所以请告诉我它是否错误!

不清楚您正在测试的对象是什么。这就是我一直在寻找的答案!谢谢。解决方案很有效。很好