Moq中有相同的Rhino Mocks .Do()方法吗?

时间:2012-02-27 17:54:41

标签: moq rhino-mocks

在Moq中是否有相同的Rhino Mocks .Do()方法?我正在将我的Rhino Mocks代码转换为Moq,并坚持以下内容:

mockedObject
    .Expect(x => x.GetSomething())
    .Do((Func<SomeClass>)(() => new SomeClass());

这与(在Moq中,与Rhino Mocks类似)不一样:

mockedObject
    .Setup(x => x.GetSomething())
    .Return(new SomeClass());

在单元测试中多次调用GetSomething()时,第一段代码将始终返回一个新实例。第二部分将始终返回相同的实例。

我想要的是我的模拟对象(使用Moq)总是返回一个新实例。所以我实际上想要为我的模拟对象提供GetSomething()方法的实现。

Using sequences将无法解决问题,因为我不知道将调用多少次GetSomething(),我也不会对此感兴趣。

1 个答案:

答案 0 :(得分:2)

你应该可以像{犀牛般的嘲笑一样}传递.Returns Func<SomeClass>

mockedObject
    .Setup(x => x.GetSomething())
    .Returns(() => new SomeClass());