Piszę niektóre testy jednostkowe dla metody rozszerzenia, którą napisałem na IPrincipal
. Aby pomóc, stworzyłem kilka klas pomocniczych (niektóre kodu dla nie-wdrożonych członków interfejsów został pominięty dla zwięzłość):Jak utworzyć kod pośredniczący testów jednostkowych dla interfejsu zawierającego element tylko do odczytu?
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!!!
}
Jednakże, obiekt w interfejsie IIdentity
Name
jest tylko do odczytu (interfejs IIDentity
określa getter, ale nie ustawia dla właściwości Name).
Jak ustawić właściwość Nazwa w moim obiekcie pośredniczącym do celów testowych, jeśli interfejs zdefiniował go jako właściwość tylko do odczytu?
Konstruktor? tj. "IIdentityStub" będzie miał sparametryzowany konstruktor, który bierze Name jako parametr. – shahkalpesh
Czy Twój "BZZZT" odnosi się do błędu kompilacji? Byłem w stanie skompilować twoją próbkę w porządku (w/średnikach na własności Tożsamości). – micahtan
@micahtan: Tak, ale kiedy spróbujesz napisać test przeciwko niemu i ustawić wartość "Name" w teście, kompilator będzie narzekał, że 'Name' jest tylko do odczytu, ponieważ właściwość' Name' w ' IIDentity' nie ma zdefiniowanego settera. –