我正在为写在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!!!
}
然而,在IIdentity
接口Name
属性为只读( IIDentity
接口为Name属性指定了一个getter而不是setter)。
如果接口已将其定义为只读属性,如何在存根对象中设置Name属性以用于测试目的?
构造函数?即'IIdentityStub'将有一个参数化的构造函数,它将Name作为参数。 – shahkalpesh 2010-03-29 18:05:46
您的“BZZZT”引用了编译错误吗?我能够很好地编译你的示例(在标识属性上带有分号,就是这样)。 – micahtan 2010-03-29 18:27:44
@micahtan:是的,但是当您尝试针对它编写测试,并在测试中设置Name时,编译器会抱怨Name是只读的,因为'Name'属性在' IIDentity'没有定义setter。 – 2010-03-29 22:35:41