nat*_*nat 2 unit-testing moq asp.net-core-mvc
我有一个基本控制器,我在方法中设置了一些常见的控制器属性OnActionExecutionAsync,然后在OnActionExecuted方法中设置了一些常见的视图模型属性,这工作正常,但我现在需要为其编写一些单元测试。对我来说没有tdd..
我的代码是:
public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
{
//set some controller properties
await base.OnActionExecutionAsync(context, next);
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
//set some other viewmodel properties
base.OnActionExecuted(filterContext);
}
Run Code Online (Sandbox Code Playgroud)
我在测试中遇到的问题OnActionExecutionAsync,除了模拟上下文是一种痛苦之外,还在于,当方法完成时,它会自动调用该OnActionExecuted方法,并因为该方法为ActionExecutedContext空而失败。我假设我需要打电话await base.OnActionExecutionAsync(context, next);,而不是简单地打电话await next();?继续管道,虽然已经检查了Controllergithub 中的代码,但似乎基本实现仅OnActionExecuted在 ActionExecutingContext 的结果为 null 时才调用GitHub 上的 aspnet 核心控制器
知道如何让我的测试在不跳到 的情况下工作吗OnActionExecuted?
您正在进行集成测试。当事情变得难以测试时,这是一个非常明显的迹象,表明您远远超出了单元测试的范围,应该退后一步并重新评估。如果您希望确保某些功能有效,请创建一个封装该功能的方法,然后测试该功能。您可以放心地假设OnActionExecutionAsync该功能将按照预期运行并调用您的方法,因为该功能已经在 MVC 代码库中进行了测试。
| 归档时间: |
|
| 查看次数: |
1446 次 |
| 最近记录: |