2

所以我正在使用 Moq 并开始为我的控制器操作编写单元测试。

我的所有控制器都继承自 CustomController 基类,该类提供在构造函数中设置为 Membership.GetUser().ProviderUserKey 的值的 userId 属性。这样我就可以通过传递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' 被拒绝。”

有没有其他人遇到过这个问题或对解决它有任何想法?

4

1 回答 1

0

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

<system.web>
    <membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20">
</system.web>
于 2015-02-22T13:22:33.560 回答