我想测试一种方法来检查它是否正确保存了一个事务。在其内部调用Membership.GetUser()来验证每次导致测试失败的用户。有没有办法模拟这个,以便Membership.GetUser()总是返回一个有效的名称?
我正在使用Moq,C#和ASP.Net 4.5 MVC
答案 0 :(得分:5)
您可以在默认的MVC模板中看到该示例。
答案 1 :(得分:3)
是的,就像Serg所说,你可以通过提供实际服务的接口来模拟这个。此接口将具有您正在调用的公共方法,例如:
public interface IMyServiceInterface
{
IMembershipUser GetUser();
// other methods you want to use...
}
在您的单元测试中,您会说:
var mockService = new Mock<IServiceInterface>();
mockService.Setup(mock => mock.GetUser()).
Returns(new MembershipUserImplementation("MyTestUser", otherCtorParams));
在我的例子中,我将为MembershipUser创建一个包装器,看起来它也需要在抽象之后。