无法分配给<method name =“”>,因为它是方法组:错误(使用Moles框架)</method>

时间:2013-01-01 12:54:02

标签: c# moles

这两行代码给出了标题中提到的错误。我正在尝试为TestClass

定义存根
var stubTestClass = new StubsTutorial.Moles.STestClass();
stubTestClass.WriteStuff = () => "Moled in static class!";

这就是函数WriteStuff()的定义方式

public class TestClass {
  public string WriteStuff() {
    return "Stuff written in main class.";
  }
}

我不确定我哪里出错了。方向会帮助我。

3 个答案:

答案 0 :(得分:0)

我不是Moles用户,但......

“默认情况下,会为所有接口和抽象类生成存根,但您也可以配置Moles为显示虚拟方法的非抽象类生成存根”

所以

a)您是否正确配置 b)我注意到,如果a)是正确的,该方法没有标记为虚拟

public virtual string WriteStuff() { ... }

因为封闭类是具体的(未标记为抽象或接口)

答案 1 :(得分:0)

a tutorial我发现:

  

通过在其名称前加上“M”来命名每种痣类型   并将其放入.Moles命名空间。

所以也许你的行

var stubTestClass = new StubsTutorial.Moles.STestClass();

应改为

var moleTestClass = new StubsTutorial.Moles.MTestClass();

虽然我没有使用Microsoft Moles的经验。

答案 2 :(得分:0)

Stubs通过覆盖它们来为公共抽象和虚拟方法创建伪代理。如果该方法未标记为虚拟或抽象,则编译器将否决任何尝试为存根委托分配值,因为该方法未被覆盖以返回指定的委托。通过使用两种方法对一个测试类进行存根来尝试它,一种是公共虚拟,另一种是公共虚拟。为了测试没有接口契约或抽象或虚方法的公共类,必须使用填充程序,而不是存根。