所以我正在使用Moq并开始为我的控制器操作编写单元测试。
我的所有控制器都从一个基类CustomController类继承,该类在构造函数中提供userId属性,作为Membership.GetUser()。ProviderUserKey的值。这样我只需传递contactId就可以将userId传递给我的服务层。
这个单元测试看起来效果不好:
var serviceMock = new Mock<IFormService>();
serviceMock.Setup(g => g.GetForm(2)).Returns(new FormViewModel() {ID = 2, Name = "Mock Form"});
var controller = new FormController(serviceMock.Object);
var result = controller.Index(2);
Assert.IsNotNull(result, "View Result is null");
它在基本CustomController上抛出异常,它尝试从Membership.GetUser()。ProviderUserKey设置userId。
“UnauthorizedAccessException:拒绝访问路径'C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow \ App_Data'。”
有没有其他人遇到过这个问题,或者有任何想法绕过它?
答案 0 :(得分:0)
您可能忘记在webconfig中设置成员资格提供程序:
<system.web>
<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20">
</system.web>