发布单元测试从自定义基本控制器继承的asp.net MVC控制器

时间:2013-07-19 21:00:45

标签: asp.net-mvc unit-testing

所以我正在使用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'。”

有没有其他人遇到过这个问题,或者有任何想法绕过它?

1 个答案:

答案 0 :(得分:0)

您可能忘记在webconfig中设置成员资格提供程序:

<system.web>
    <membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20">
</system.web>