x.HttpContext.Request .ServerVariable-6ren">
gpt4 book ai didi

.net - 如何模拟 ASP.NET ServerVariables ["HTTP_HOST"] 值?

转载 作者:行者123 更新时间:2023-12-04 18:53:41 26 4
gpt4 key购买 nike

我有以下代码,在运行时失败...

var mock = new Mock<ControllerContext>();
mock.SetupGet(x => x.HttpContext.Request
.ServerVariables["HTTP_HOST"]).Returns(domain);

** RunTime Error: Invalid setup on non-overridable property



我的 Controller 中有一些代码,需要检查用户请求/访问的域。

我不知道如何模拟它?有任何想法吗?

附注。我在上面的例子中使用了 Moq framewoke .. 所以我不确定这是否是一个问题,等等?

最佳答案

您不能在 NameValueCollection 上模拟索引器,因为它不是虚拟的。我要做的是模拟 ServerVariables 属性,因为它是虚拟的。您可以填写自己的 NameValueCollection。见下文

这是我会做的:

 var context = new Mock<ControllerContext>();
NameValueCollection variables = new NameValueCollection();
variables.Add("HTTP_HOST", "www.google.com");
context.Setup(c => c.HttpContext.Request.ServerVariables).Returns(variables);
//This next line is just an example of executing the method
var domain = context.Object.HttpContext.Request.ServerVariables["HTTP_HOST"];
Assert.AreEqual("www.google.com", domain);

关于.net - 如何模拟 ASP.NET ServerVariables ["HTTP_HOST"] 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2315272/

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