- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试模拟这个 Controller :
public IActionResult List()
{
Response.Headers.Add("contentRange", "1");
Response.Headers.Add("acceptRange", "1");
return Ok();
}
通过这个测试:
[Fact]
public void when_call_list_should_return_sucess()
{
//Arrange
//Act
var result = _purchaseController.List();
//Assert
Assert.Equal(200, ((ObjectResult)result).StatusCode);
}
但是我的HttpContext是null,报错了,怎么mock我的ActionContext和HttpContext来测试呢?
最佳答案
您可以在您构建 _purchaseController 的地方、在您的设置中或类似的地方执行此操作。在您的情况下,您甚至不必 mock 它。
_purchaseController = new PurchaseController
{
ControllerContext = new ControllerContext
{
HttpContext = new DefaultHttpContext()
}
}
但如果您还想验证响应 header ,您可能会同时模拟 HttpContext
和预期的 HttpResponse
,并提供您自己的 HeaderDictionary
验证。
_headers = new HeaderDictionary();
var httpResponseMock = new Mock<HttpResponse>();
httpResponseMock.Setup(mock => mock.Headers).Returns(_headers);
var httpContextMock = new Mock<HttpContext>();
httpContextMock.Setup(mock => mock.Response).Returns(httpResponseMock.Object);
_purchaseController = new PurchaseController
{
ControllerContext = new ControllerContext
{
HttpContext = httpContextMock.Object
}
}
然后您可以在测试中断言 header 集合
var result = _sut.List();
Assert.Equal("1", _headers["contentRange"]);
Assert.Equal("1", _headers["acceptRange"]);
关于c# - 如何使用 Moq aspnetcore C# xUnit 模拟 ActionContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42822293/
ActionContext ActionContext是Action的上下文,Struts2自动在其中保存了一些在Action执行过程中所需的对象,比如ses
我的问题是: 在Struts2中,每个action对象都有自己对应的ActionContext和ValueStack吗? 换句话说,对于每个新请求,都会创建一个新的操作对象。这是否意味着每次创建新的操
最近我将 struts2 版本从 2.0.11 更新到了当前的 2.2.3。不幸的是,我现在遇到了一些奇怪的问题,到目前为止我还无法解决。 当我尝试获取 ActionContext 时: Action
我有一个关于 struts2 链接操作的非常复杂的问题,提前感谢您耐心阅读我的问题。我会尽力描述清楚。 下面是我的struts.xml:
我正在尝试在 Struts2 中编写一个拦截器,它根据某些条件将请求重定向到不同的操作。我的拦截器工作正常,如下所示。 public String intercept(ActionInvocati
Struts ActionContext 在测试期间为 null。 使用 Struts2 JUnit 插件我进行了以下测试: public class MainActionIT extends Str
我查了很久这个资料,网上好像没有很多。 为简单起见,我们如何访问 ActionContext通过标签? 基本上我想得到 com.opensymphony.xwork2.ActionContext.lo
我在struts2中使用SessionAware,但是当我获取session的值时它返回null。我的 Action 类和方法是- public class CustomLocation extend
背景: 我想使用通过 Ninject 注入(inject)的 IAuthenticationFilter 实现来验证对我的 Web API 的 POST 请求。要验证请求,我需要访问请求正文。 问题:
我正在使用 cucumber-jvm 在一个以 Struts 2 和 Tomcat 作为我的 Servlet 容器的应用程序上编写验收测试(测试行为)。在我的代码中的某个时刻,我需要从 Struts
在此代码中,我使用 ActionContext 从 Request 对象获取 Session 和 ServletActionContext。我觉得这是一种不好的做法,因为必须仅将 ActionCont
我正在调整 http://displaytag.svn.sourceforge.net/viewvc/displaytag/trunk/displaytag/src/main/java/org/dis
阅读了通过 ActionContext.getContext().getSession() 获取 session 映射与通过注入(inject) session 映射之间的差异之后SessionAwa
我需要设置一个 ServletRequest Struts2 拦截器(不是操作类)中的属性。 ActionContext暴露一个Map控制请求属性,就像它对 session 属性所做的那样? 我看到
我正在通过 maven 运行 JUnit 测试,其中正在测试进行以下调用的 struts 操作 java 方法: // Gets this from the "org.apache.struts2.u
我正在尝试模拟这个 Controller : public IActionResult List() { Response.Headers.Add("contentRange"
我目前正在这样做,但如果找不到 key ,它会抛出异常。 此代码段位于从 ActionFilterAttribute 继承的 Web API 过滤器中,在覆盖方法 OnActionExecuting
我在 Microsoft.AspNetCore.Mvc.Controller 中找不到 ActionContext 在我将我的版本更改为 AspNetCore 1.0.0-preview1 之后 这是
我在 IActionContextAccessor 使用 asp.net core 的内置 DI 容器时遇到一些问题。 IActionContextAccessor.ActionContext 属性在
我需要知道如何创建自定义 IModelBinder在 MVC 4 中,它已被更改。 必须实现的新方法是: bool BindModel(HttpActionContext actionContext,
我是一名优秀的程序员,十分优秀!