我正在爲寫在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