Jun*_*r M 2 rhino-mocks getter-setter c#-4.0
我正在研究Rhino.Mocks如何工作并试图了解如何在类Property中手动设置值.
我在互联网上看到过一个样本,你只希望Property作为Expect.Call()的参数,而不是使用方法.
MockRepository mocks = new MockRepository();
Person p = mocks.StrictMock<Person>();
Expect.Call(p.FirstName).Return("John");
Run Code Online (Sandbox Code Playgroud)
人是一类如:
public class Person
{
public string FirstName {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
我总是收到错误:
呼叫无效,最后一次呼叫已被使用或未进行任何呼叫(确保您正在调用虚拟(C#)/可覆盖(VB)方法).
我错过了什么吗?是否可以设置手动类属性并评估它们以查看getter和setter是否正常工作?
与任何模拟框架一样,Rhino Mocks只能模拟定义虚拟方法和属性的接口或类.
这是因为在实现类时,Rhino会根据您指定的类创建派生类,将每个virtual(或OverridableVB)方法替换为使用拦截器来处理调用的存根实现.
指定非虚方法时,Rhino无法创建包装器.
这也是真正的sealed(NonInheritable在VB中)类.
因此,要让您的班级工作,您应该如下实现该属性:
public class Person
{
public virtual string FirstName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这样Rhino就可以相应地覆盖这个属性.
| 归档时间: |
|
| 查看次数: |
2755 次 |
| 最近记录: |