You can write a wrapper class for your membership so you can create a layout for use in unit tests. The code is in C #, I'm sorry, but you will get my opinion.
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, mock .
var mock = new Mock<IMyMemberShip>();
mock.Setup(m => m.GetUserId()).Returns(Guid.NewGuid());