Вы можете написать класс-оболочку для вашего членства, чтобы вы могли создать Mock для использования в ваших модульных тестах.код написан на C #, я прошу прощения, но вы поймете мою точку зрения.
public interface IMyMemberShip
{
Guid GetUserId();
}
public class MyMemberShip : IMyMemberShip
{
public Guid GetUserId()
{
return (Guid)System.Web.Security.Membership.GetUser().ProviderUserKey;
}
}
public class MockMyMembership : IMyMemberShip
{
public Guid GetUserId()
{
return Guid.NewGuid();
}
}
public class AnotherPartOfYourApplication
{
IMyMemberShip _myMembership;
public AnotherPartOfYourApplication(IMyMemberShip myMemberShip)
{
_myMembership = myMemberShip;
}
public void GetUserIdAndDoSomething()
{
var userId = _myMembership.GetUserId();
}
}
Если вы не делаете сложные вещи в своем макете, я бы, вероятно, использовал moq , чтобы вы неВам вообще не нужен фиктивный класс в ваших юнит-тестах.
var mock = new Mock<IMyMemberShip>();
mock.Setup(m => m.GetUserId()).Returns(Guid.NewGuid());