【问题标题】:Assigning to a stub class method in Moles while using partial stubs在使用部分存根时分配给 Moles 中的存根类方法
【发布时间】:2011-09-09 19:22:16
【问题描述】:

我已经看到 this question 关于部分存根,但它并没有完全告诉我我需要知道什么。

我了解,如果我为某个类使用 Moles 存根(例如,对于 DataService,我使用的是 SDataService),我可以将 CallBase 属性设置为 true,这样,如果特定方法没有委托,则将调用基本实现的方法。太好了,但是在这种情况下,如何将委托分配给特定方法?

如果没有办法做到这一点,假设我有一个接口IDataService,我使用SIDataService 存根。我可以在这里轻松地将委托分配给方法。但是,如果给定方法没有委托,我如何告诉它调用DataServiceIDataService 的实现)上的相应方法?

谢谢!

编辑:

我现在看到,在上面的第一个场景中,该方法需要是虚拟的才能被覆盖。我不认为这很有意义,但事实就是如此。

那么,专注于第二种情况,我是否必须创建一个Behavior? (为什么还没有像痣一样的存根?)或者有更简单的方法吗?

【问题讨论】:

  • 可以给个代码示例吗?你看过 MInterdaces 吗?如果方法不是虚拟的,你可以在你的类的 MInterface 中做一个 Mock。
  • @peer 我最初并没有看到该方法需要是虚拟的。这不在 Pex 上下文中 - 我可以使用 MInterface 吗?

标签: moles


【解决方案1】:

委托(绕道)设置为存根类型,方式与摩尔类型相同。例如,SIDataService.GetMemberProfile() 被配置为返回一个模拟对象,如下所示:

var memberMock = new Member() { Firstname="Joe", LastName="Schmoe" };
var stub = new SIDataService();
stub.GetMemberProfileMember = i => memberMock;

【讨论】:

  • 谢谢,但这并不能完全回答问题。我正在寻找一种方法来默认为实际对象的方法,而不是为每个方法创建一个委托。换句话说,我希望我定义委托的所有方法都使用特定对象的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 2021-06-10
  • 2019-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-31
相关资源
最近更新 更多