【发布时间】:2015-02-26 10:10:21
【问题描述】:
编辑:Why doesn't Moq run the overridden ToString method? 给出了提示。我必须将 filtermock.CallBase 设置为 true。现在可以了。
我正在尝试为 asp.net webapi 项目编写单元测试。我想要做的是,用相应的过滤器测试一个函数。我像这样设置控制器和过滤器起订量对象:
var filtermock= new Mock<MyActionFilterAttribute>();
filtermock.SetupGet(attr => attr.UserId).Returns(userName);
[...]
var controllermock = new Mock<MyController>();
var filtermock = new Mock<MyActionFilterAttribute>();
单元测试如下所示:
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 的基类被调用了?谁能给我一个提示我在这里做错了什么?
【问题讨论】:
标签: unit-testing asp.net-web-api moq actionfilterattribute