gpt4 book ai didi

unit-testing - 单元测试基础 Controller OnActionExecutionAsync 和 OnActionExecuted 方法

转载 作者:行者123 更新时间:2023-12-02 03:48:30 26 4
gpt4 key购买 nike

我有一个基本 Controller ,我在 OnActionExecutionAsync 方法中设置了一些通用 Controller 属性,然后在 OnActionExecuted 方法中设置了一些通用 View 模型属性这工作正常,但我现在需要为它编写一些单元测试。对我来说没有 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);
}

我在 OnActionExecutionAsync 测试中遇到的问题是,除了模拟上下文很痛苦之外,当方法完成时,它会自动调用 OnActionExecuted方法,并因 ActionExecutedContext 为空而倒下。我假设我需要调用 await base.OnActionExecutionAsync(context, next);,而不是简单地 await next();?继续管道,虽然检查了 github 中的 Controller 代码,但当 ActionExecutingContext 的结果为 null aspnet core controller on GitHub 时,基本实现似乎只调用 OnActionExecuted知道如何在不跳转到 OnActionExecuted 的情况下让我的测试工作吗?

最佳答案

您正在进行集成测试。当事情变得难以测试时,这是一个非常明显的迹象,表明您远远超出了单元测试的范围,应该退后一步并重新评估。如果您希望确保某些功能有效,请创建一个封装该功能的方法,然后测试。您可以安全地假设 OnActionExecutionAsync 等将按预期运行并调用您的方法,因为该功能已经在 MVC 代码库中进行了测试。

关于unit-testing - 单元测试基础 Controller OnActionExecutionAsync 和 OnActionExecuted 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46098692/

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