J'écris des tests unitaires pour une méthode d'extension que j'ai écrite sur IPrincipal
. Pour aider, je l'ai créé deux classes d'aide (un code pour les membres non mis en œuvre des interfaces a été omis par souci de concision):Comment créer un talon de test d'unité pour une interface contenant un membre en lecture seule?
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!!!
}
Cependant, la propriété Name
dans l'interface IIdentity
est en lecture seule (l'interface IIDentity
spécifie un getter mais pas un setter pour la propriété Name).
Comment puis-je définir la propriété Name dans mon objet de raccord à des fins de test si l'interface l'a définie en tant que propriété en lecture seule?
Constructeur? i.e 'IIdentityStub' aura un constructeur paramétré qui prend Name comme paramètre. – shahkalpesh
Est-ce que votre "BZZZT" faisait référence à une erreur de compilation? J'ai été capable de compiler votre échantillon très bien (w/point-virgule sur la propriété Identity, c'est-à-dire). – micahtan
@micahtan: Oui, mais lorsque vous essayez d'écrire un test et que vous définissez la valeur de 'Name' dans le test, le compilateur se plaindra que' Name' est en lecture seule, car la propriété 'Name' dans' IIDentity' n'a pas de setter défini. –