使用rhino mocks为每个调用返回不同的实例

All*_*est 12 .net c# unit-testing rhino-mocks mocking

我有这个代码:

Expect.Call(factory.CreateOrder())
    .Return(new Order())
    .Repeat.Times(4);
Run Code Online (Sandbox Code Playgroud)

每次调用此函数时,每次返回相同的实例.我希望返回差异实例.我希望能够做到这样的事情:

Expect.Call(factory.CreateOrder())
    .Return(() => new Order())
    .Repeat.Times(4);
Run Code Online (Sandbox Code Playgroud)

这可以用某种方式完成吗?

Ped*_*dro 14

而不是使用

.Return(new Order());
Run Code Online (Sandbox Code Playgroud)

尝试使用

.Do((Func<Order>)delegate() { return new Order(); });
Run Code Online (Sandbox Code Playgroud)

这将每次调用委托,创建一个新对象.

  • 需要注意的一点是,即使您不打算传递它,函数签名也必须与原始调用匹配.我最终看起来像这样:`.Stub(m => m.Load(docId)).做((Func <long,doc>)(arg => GetDocument());`注意长度是多少倾倒.否则你会得到一个例外. (4认同)