首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据接收到的参数获取返回新对象的NMock期望

根据接收到的参数获取返回新对象的NMock期望
EN

Stack Overflow用户
提问于 2013-02-13 17:19:36
回答 2查看 2K关注 0票数 1

NMock3是我选择的模拟框架,但我正在努力让它做我想做的事情。

例如:

代码语言:javascript
复制
var mockFactory = new MockFactory();
var mockA = mockFactory.CreateMock<ObjectA>();
mockA.Expects.One.Method(c => c.BuildObjectB(null))
  .With(Is.TypeOf(typeof(string)))
  .WillReturn(new ObjectB(<?>));

在WillReturn中新建ObjectB时,如何访问ObjectB接收到的参数?使用NMock3可以做到这一点吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-13 17:44:04

我不认为NMock3库允许您这样做。文档很少,但我已经浏览了NMock3的Acceptance Tests,但找不到一个可以做这样的事情。

我不认为这是一件非常糟糕的事情。单元测试通常是确定性的,因此可以提前知道String的值是什么。单元测试是一个重复自己是件好事的地方。它使测试变得更简单和更具可读性。因此,在您的示例中,我会选择简单但完全可读的go

代码语言:javascript
复制
var mockFactory = new MockFactory();
var mockA = mockFactory.CreateMock<ObjectA>();
mockA.Expects.One.Method(c => c.BuildObjectB("Frank")).WillReturn(new ObjectB("Frank"));

我可以想到一些(罕见的)不确定的情况,例如,返回一个DateTime,而您事先不知道它会是哪一个。或者,这个函数可能会被调用很多次,使用不同的参数。在这些情况下,您可以使用一个简单的存根来跟踪它被调用的次数。

票数 1
EN

Stack Overflow用户

发布于 2016-09-14 16:00:59

您可以使用Collect.MethodArgument:

代码语言:javascript
复制
var mockFactory = new MockFactory();
var mockA = mockFactory.CreateMock<ObjectA>();
mockA.Expects.One.Method(c => c.BuildObjectB(null))
  .With(Is.TypeOf(typeof(string)))
  .WillReturn(Collect.MethodArgument<string>(0, delegate(string myString) { new ObjectB(myString); }));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14850097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档