asp.net-mvc - 在 MVC.NET 中测试 User.IsInRole

标签 asp.net-mvc unit-testing tdd

我正在尝试在我的应用程序中测试 User.IsInRole("Administrator"),并且实际上尝试将用户角色分配给 ("Administrator") 以便我的测试通过。我正在使用 Scott Hanselman 的 MvcMockHelpers 来执行此操作,目前我有以下测试。

    [Test]
    public void Create_CanInsertNewArticleView_IsNotNull()
    {
        // Arrange
        var controller = new ArticleController();

        MockRepository mockRepo = new MockRepository();
        var fakeContext = MvcMockHelpers.FakeHttpContext(mockRepo, "~/Article/Create");
        fakeContext.User.IsInRole("Administrator");

        // Act
        Article fakeArticle = FakeObjects.ReturnFakeArticle();

        var result = controller.Create(fakeArticle) as ViewResult;

        // Assert
        Assert.IsNotNull(result);
    }

然而,实际 Controller 的用户目前为空。

谁能帮助我并告诉我正确的测试应该是什么,到User.IsInRole("Administrator")
感谢您的帮助和时间

约翰

最佳答案

this related answer详情。

这是转换为 Rhino Mocks 的其他答案的代码片段:

var user = new GenericPrincipal(new GenericIdentity(string.Empty), null);
var httpCtx = MockRepository.GenerateStub<HttpContextBase>();
httpCtx.User = user;

var controllerCtx = new ControllerContext();
controllerCtx.HttpContext = httpCtx;

sut.ControllerContext = controllerCtx;

关于asp.net-mvc - 在 MVC.NET 中测试 User.IsInRole,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1900071/

相关文章:

ios - Xcode7/iOS9 : Unit Tests: iPhone Developer: ambiguous (matches "iPhone Developer: Max M. (Team A ID) and "iPhone Developer: Max M.(团队 B ID))

使用Google Mock进行C++高性能单元测试?

.net - 使用嵌套验证对复杂模型进行单元测试

symfony - 使用 phpspec 测试 Symfony2 命令

language-agnostic - 测试类可以变成 "God object"吗?

jquery - 异步更新div ---更新注释

javascript - 一个按钮中有两个onClick函数,并且想要一个接一个地发生单击函数

python - 以秒为单位获取python单元测试持续时间

asp.net-mvc - ASP.NET Core TagHelper 输入 asp-for 渲染值属性与请求模型中的原始值保持一致

asp.net-mvc - 无法忽略 ASHX 路线