Rob*_*vey 5 c# unit-testing properties interface readonly
我正在为我编写的扩展方法编写一些单元测试IPrincipal
.为了提供帮助,我创建了几个辅助类(为简洁起见,省略了一些未实现的接口成员的代码):
public class IPrincipalStub : IPrincipal
{
private IIdentity identityStub = new IIdentityStub();
public IIdentity Identity
{
get { return identityStub; }
set { identityStub = value; }
}
}
public class IIdentityStub : IIdentity
{
public string Name { get; set; } // BZZZT!!!
}
Run Code Online (Sandbox Code Playgroud)
但是,接口中的Name
属性IIdentity
是只读的(IIDentity
接口指定getter但不指定Name属性的setter).
如果接口已将其定义为只读属性,如何在存根对象中设置Name属性以进行测试?
您正在使用 C# 的自动属性功能,但您应该采用手动路线并为属性创建一个支持字段。一旦有了支持字段,您就可以在构造函数中设置它的值(或者将其设为公共字段并在拥有对象后设置它,但这有点难看)。
public class IIdentityStub : IIdentity{
private string _name;
public IIdentityStub(string name){
_name = name;
}
public string Name { get { return _name; } }
}
Run Code Online (Sandbox Code Playgroud)