gpt4 book ai didi

c# - 如何模拟 Url.Action

转载 作者:行者123 更新时间:2023-12-02 04:33:41 25 4
gpt4 key购买 nike

我尝试进行单元测试的方法返回:

return Json(new { ok = true, newurl = Url.Action("Index") });

但这行抛出 NullReferenceException 这是由这部分返回引起的:

newurl = Url.Action("Index")

我试图用以下内容做一些东西:

Request.SetupGet(x => x.Url).Returns(// Data here);

没有效果。

你能给我建议任何解决方案吗?

最佳答案

以下是如何使用 NSubstitute 模拟 UrlHelper 。它与其他模拟库非常相似:

UrlHelper Url { get; set; }

[TestFixtureSetUp]
public void FixtureSetUp()
{
var routes = new RouteCollection();
RouteConfig.RegisterRoutes(routes);

var httpContext = Substitute.For<HttpContextBase>();
httpContext.Response.ApplyAppPathModifier(Arg.Any<string>())
.Returns(ctx => ctx.Arg<string>());
var requestContext = new RequestContext(httpContext, new RouteData());
Url = new UrlHelper(requestContext, routes);
}

// Pages

[Test]
public void HomePage()
{
Url.Action("home", "pages").ShouldEqual("/");
}

[Test]
public void PageDetails()
{
Url.Action("details", "pages", new { slug = "contact" }).ShouldEqual("/pages/contact");
}

关于c# - 如何模拟 Url.Action,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22473426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com