- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
简而言之:在单元测试中通过 Controller 测试 IHttpActionResult 的最佳方法是什么?
给定一个自定义 IHttpActionResult
,在 ExecuteAsync
方法中包含一些逻辑
public class AcceptedResult : IHttpActionResult
{
private readonly Func<string> _ticket;
public AcceptedResultV2(HttpRequestMessage request, Func<string> ticket)
{
_ticket = ticket;
}
public async Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
{
var response = new HttpResponseMessage(HttpStatusCode.Accepted);
response.Headers.Add("x-ticket-id", _ticket());
return response;
}
}
和一个公开IHttpActionResult
[HttpPost]
public IHttpActionResult Get(SearchScheduledTaskRequest searchScheduledTaskRequest)
{
if(something) return new AcceptedResult(Request, () => "foo");
return new AcceptedResult(Request, () => "bar");
}
测试这个的最佳方法是什么?
目前,我已经决定手动调用 ExecuteAsync
,但我必须始终调用 ExecuteAsync
有点令人不快。
我当然可以将它提取到某个地方,但是我想知道是否有更好的方法。
[TestMethod]
public async Task Has_Request_Id()
{
var response = await _controller.Get(new SearchScheduledTaskRequest()).ExecuteAsync(CancellationToken.None);
System.Collections.Generic.IEnumerable<string> headers;
response.Headers.TryGetValues("x-request-id", out headers);
Assert.AreEqual("foo", headers.First());
}
更新:更清楚地表明我想测试 Controller 是否返回带有特定 header 的响应。
最佳答案
根据提供的代码,我将测试 AcceptedResult 类的 ExecuteAsync 方法是否返回包含正确 header 的响应,因为这应该始终是案例。
您的 Controller 测试方法只需要验证结果是否与 AcceptedResult 类型匹配。
关于c# - 通过 Controller 使用 ExecuteAsync 测试 IHttpActionResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34718760/
我的 RestSharp 实现存在以下问题。如何让我的应用程序在继续之前等待 ExecuteAsync() 的响应? 我尝试了不同的解决方案: 首先(该方法不等待 ExecuteAsync 响应):
我熟悉如何在我的 Google Drive 中创建文件夹,但我正在考虑使用异步方法来执行此操作。但是,在这样做时,我不确定如何获取我明确添加到我希望返回的字段中的字段。 我的代码如下: private
我在 Asp.Net Core Web API 中实现了一个 Microsoft.Extensions.Hosting.BackgroundService,它在 ExecuteAsync 内部有一个阻
对于使用 MSAL.NET v4 (nuget Microsoft.Identity.Client v4.3.0) 中的应用程序(客户端 ID 和 secret 无用户上下文)使用承载 token 进
所以,这一直有效(并且在模拟器中继续正常工作)。 当我在 Azure 中启动经典云服务时,出现以下错误。 ExecuteAsync() 位于 Web 角色中,位于 Results/ChallengeR
我对 AcquireTokenWithDeviceCode 的调用以及对返回对象使用 ExecuteAsync() 的调用永远不会返回。 deviceCodeResultCallback 中的断点按预
这是我的原始方法示例 public void insertIntoDb(SampleObject sample){ ------------------------------------
我正在尝试使用 ExecuteAsync 发出异步获取请求,但它从不回应。令我困惑的是 ExecuteAsync有效,两种同步方法也是如此 Execute和 Execute . 这是我的代码: var
我正在调用 request.executeAnsyc 以用信息填充我的数组并显示在 ListView 上。遗憾的是,在 request.executeAnsyc 完成之前调用了数组。所以我的 Frag
我正在尝试将 10000 条记录插入 Azure 表存储中。我正在使用 ExecuteAsync() 来实现它,但不知何故插入了大约 7500 条记录,其余记录丢失了。我故意不使用 await 关键字
所以我有一个 dotnet 核心工作进程,我想在某些情况下关闭工作进程。 protected override async Task ExecuteAsync(CancellationToken st
我有一个名为 Worker 的 BackgroundService,我重写了 ExecuteAsync 方法以每 10 秒运行一次。有时,我跑的东西会持续很长时间。在这种情况下,我想终止正在运行的程序
我在执行包装策略时遇到上述异常,包括:重试、断路器和隔板。 我有以下政策: var sharedBulkhead = Policy.BulkheadAsync( maxPara
如果根据 Protractor 规范,我在 browser.executeAsyncScript 中执行脚本,我应该如何告知脚本确实失败了?考虑以下对 browser.executeAsyncScri
尝试使用 Nsubstitute 为 RestClient(来自 RestSharp)模拟 ExecuteAsync 方法时遇到了困难。我看过一个使用 Moq 的示例(此处:Mocking Rests
我在异步方法中返回变量时遇到问题。我能够获取要执行的代码,但无法获取返回电子邮件地址的代码。 public async Task GetSignInName (string id) {
我正在尝试通过调用 session.executeAsync() 而不是 session.execute() 来加速我们的代码写入数据库。 我们有数据库连接可能断开的用例,目前之前的 execute(
我是 Javascript 的新手,正在尝试编写一个 firefox 附加组件。 我正在尝试将从 SQL 查询返回的数据传递/提取到调用函数。好像不行。 我搜索了有关变量范围的信息,查看了我可以在该站
我正在使用 datastax java 驱动程序 3.1.0 连接到 cassandra 集群,我的 cassandra 集群版本是 2.0.10。我正在以 QUORUM 一致性异步编写。 pri
在我的 api Controller 操作方法中。我正在为获取请求使用内容协商。代码是: IContentNegotiator negotiator = this.Configuration.Serv
我是一名优秀的程序员,十分优秀!