C# 4.0 如何使用Rhino.mock评估类属性(getter和setter)
我正在研究Rhino.Mocks是如何工作的,并试图了解如何在类属性中手动设置值 我在internet上看到了一个示例,其中您只将所需的属性作为Expect.Call()的参数,而不使用方法C# 4.0 如何使用Rhino.mock评估类属性(getter和setter),c#-4.0,rhino-mocks,getter-setter,C# 4.0,Rhino Mocks,Getter Setter,我正在研究Rhino.Mocks是如何工作的,并试图了解如何在类属性中手动设置值 我在internet上看到了一个示例,其中您只将所需的属性作为Expect.Call()的参数,而不使用方法 MockRepository mocks = new MockRepository(); Person p = mocks.StrictMock<Person>(); Expect.Call(p.FirstName).Return("John"); 我总是收到错误: 无效呼叫,上次呼叫已被取
MockRepository mocks = new MockRepository();
Person p = mocks.StrictMock<Person>();
Expect.Call(p.FirstName).Return("John");
我总是收到错误:
无效呼叫,上次呼叫已被取消
已使用或未拨打电话(拨打
确保您正在调用虚拟机
(C#)/Overridable(VB)方法)
我错过什么了吗?是否可以手动设置类属性并对其进行评估,以查看getter和setter是否工作正常?与任何模拟框架一样,Rhino mock只能模拟定义虚拟方法和属性的接口或类 这是因为在实现一个类时,Rhino从您指定的类创建一个派生类,用一个存根实现替换每个
virtual
(或VB中的Overridable
)方法,存根实现使用拦截器来处理调用
指定非虚拟方法时,Rhino无法创建包装器
对于密封的
(在VB中不可继承的
)类也是如此
因此,为了让类正常工作,您应该实现如下属性:
public class Person
{
public virtual string FirstName { get; set; }
}
这样Rhino就可以相应地覆盖权限。您确定要调用虚拟财产吗?@Darin:谢谢。。我没看到打字错误
public class Person
{
public virtual string FirstName { get; set; }
}