在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()
,我也不会对此感兴趣。
答案 0 :(得分:2)
你应该可以像{犀牛般的嘲笑一样}传递.Returns
Func<SomeClass>
:
mockedObject
.Setup(x => x.GetSomething())
.Returns(() => new SomeClass());