编辑:Why doesn't Moq run the overridden ToString method?给出提示。我必须将filtermock.CallBase设置为true。现在它有效。
我正在尝试为asp.net webapi项目编写单元测试。我想要做的是,用相应的过滤器测试一个函数。我设置了控制器和过滤器moq对象,如下所示:
var filtermock= new Mock<MyActionFilterAttribute>();
filtermock.SetupGet(attr => attr.UserId).Returns(userName);
[...]
var controllermock = new Mock<MyController>();
var filtermock = new Mock<MyActionFilterAttribute>();
unittest看起来像这样:
var controller = controllermock.Object;
var filter = filtermock.Object;
await filter.OnActionExecutingAsync(null, CancellationToken.None);
await controller.MyTestFunction();
await filter.OnActionExecutedAsync(null, CancellationToken.None);
问题是,当我运行/调试测试时,被调用的函数OnActionExecutingAsync和OnActionExecudedAsync没有被调用。我想调用ActionFilterAttribute的基类?谁能给我一个提示我在这里做错了什么?
答案 0 :(得分:0)
您如何期待过滤器被称为?过滤器模块不会与控制器模块相关联,因此控制器模块甚至不知道过滤器模块。
这是我试图解决自己的问题:如何将动作过滤器注入控制器。