我正在研究Rhino.Mocks的工作原理,并试图了解如何在Property类中手动设置一个值。

我在Internet上看到了一个示例,在该示例中,您仅希望将Property作为Expect.Call()的参数,而不是使用方法。

MockRepository mocks = new MockRepository();
Person p = mocks.StrictMock<Person>();
Expect.Call(p.FirstName).Return("John");

人是一类,例如:
public class Person
{
   public string FirstName {get;set;}
}

我总是收到错误:



我想念什么吗?是否可以手动设置Properties类并对其进行评估,以查看getter和setter是否工作正常?

最佳答案

与任何模拟框架一样,Rhino Mocks只能模拟定义虚拟方法和属性的接口(interface)或类。

这是因为在实现一个类时,Rhino从您指定的类创建一个派生类,将每个virtual(或VB中的Overridable)方法替换为使用拦截器处理调用的存根实现。

当您指定非虚拟方法时,Rhino无法创建包装器。
sealed(VB中的NonInheritable)类也是如此。

因此,为了使您的类正常工作,您应该这样实现属性:

public class Person
{
    public virtual string FirstName { get; set; }
}

这样Rhino可以相应地覆盖人口。

关于c#-4.0 - 如何使用Rhino.Mocks评估类的属性(getter和setter),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5448178/

10-11 05:04