- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
如何模拟 HttpRequestMessage
,特别是 CreateResponse
?
var requestMessage = Substitute.For<HttpRequestMessage>();
requestMessage.CreateResponse().ReturnsForAnyArgs(
new HttpResponseMessage(HttpStatusCode.OK));
但我得到了异常(exception)...
NSubstitute.Exceptions.CouldNotSetReturnDueToNoLastCallException:
'Could not find a call to return from.
我看过问题... How to mock the CreateResponse<T> extension method on HttpRequestMessage
与相关... ASP.NET WebApi unit testing with Request.CreateResponse ...
但他们似乎并没有真正结束 mock CreateResponse
补充说明:
我正在尝试围绕 Azure 预编译 C# 函数的启动器编写单元测试......
[FunctionName("Version")]
public static HttpResponseMessage Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]
HttpRequestMessage req,
TraceWriter log)
{
log.Info("Version function processed a request ... ");
return req.CreateResponse(HttpStatusCode.OK, "Version 0.0.1");
}
在实际测试中,我想模拟 HttpRequestMessage,特别是出现错误的 CreateReponse 是......
[TestMethod]
public void Version_returns_value()
{
var requestMessage = Substitute.For<HttpRequestMessage>();
requestMessage.CreateResponse(Arg.Any<HttpStatusCode>(), Arg.Any<string>())
.Returns(new HttpResponseMessage(HttpStatusCode.OK));
var log = new CustomTraceWriter(TraceLevel.Verbose);
var httpResponseMessage = VersionFunction.Run(requestMessage, log);
var httpContent = httpResponseMessage.Content;
httpContent.Should().Be("Version 0.0.1 :: valid");
}
最佳答案
这里不需要模拟任何东西。对于这个测试,一切都可以安全地 stub 。 CreateResponse
是一种扩展方法,它在内部使用请求的关联 HttpConfiguration
。这是在测试中使用它之前唯一需要设置的要求。
这样,如果您按如下方式更新您的测试,您应该能够正确地执行您的测试。
[TestMethod]
public async Task Version_returns_value() {
var expected = "\"Version 0.0.1\"";
var config = new HttpConfiguration();
var requestMessage = new HttpRequestMessage();
requestMessage.SetConfiguration(config);
var log = new CustomTraceWriter(TraceLevel.Verbose);
var httpResponseMessage = VersionFunction.Run(requestMessage, null);
var httpContent = httpResponseMessage.Content;
var content = await httpContent.ReadAsStringAsync();
content.Should().Be(expected);
}
关于c# - 我如何模拟 HttpRequestMessage,特别是 CreateResponse?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45239471/
我正在尝试设置 Behat,但是当我运行 bin/behat --init 时它无法初始化。我的composer.json取自官方docs : { "require": { "
鉴于以下情况: [HttpGet] [ActionName("GetContent")] public HttpResponseMessage GetContent(int i
我正在尝试找出一种方法来在我的响应中返回一个对象,同时仍然保持可理解的返回类型。 所以对于初学者来说,我知道这会按预期工作。 public async Task DoMyThing(MyObject
下面是我的代码(部分代码),我想将它迁移到 asp.net 核心。 我的问题是“Request.CreateResponse”在下面的代码中不起作用。我谷歌了很多,但找不到任何解决方案。我该如何解决?
我在尝试使用 post 请求调用我的 web api 时遇到问题,返回了一个空数组。 我的方法是: // POST: Api/v1/transaction/ [HttpPost] p
如何模拟 HttpRequestMessage,特别是 CreateResponse? var requestMessage = Substitute.For(); requestMessage.Cr
我构建了一个由 Http 请求触发的 C# Azure 函数应用程序。该应用程序的目的是使用数字孪生来更改我的设备的所需状态。为此,我导入了以下依赖项(在 project.son 文件中): "M
我的代码是 var response = Request.CreateResponse(HttpStatusCode.OK); response.Content = new StringContent
我在 ApiController 的请求处理方法中有这段代码: if (uri != null) { HttpResponseMessage r = Request.CreateRespons
我正在尝试在 ASP.Net Web API 中创建自定义 AuthorizeAttribute 来处理基本身份验证。覆盖 HandleUnauthorizedRequest 时,我发现 HttpAc
什么时候应该使用HttpResponseMessage对象,什么时候应该使用Request.CreateResponse(...)方法? 另外,HttpResponseMessage 对象和Reque
我正在使用 ASP.Net MVC 4 RC 的 ApiController,我正在尝试对 GET 方法进行单元测试。 此方法使用 CreateResponse 上的 HttpRequestMessa
我似乎已经找到了问题,但不知道如何解决它,或者我是否可以。 当我创建一个新的 C# WebAPI项目,并为 System.Net.Http 添加导入我可以访问Request.CreateRespons
我的Azure函数代码如下 public static class MyHttpTriggerFunction { public static async Task Run([Ht
出于某种原因,Request.CreateResponse 在 VS2012 中现在是“红色”,当我将鼠标悬停在 IDE 显示的用法上时 Cannot resolve symbol 'CreateRe
我一直在我的 api Controller 中发送响应,如下 (.Net Framework 4.5) public virtual async Task Import(Guid Id) {
我在这个方法上遇到了这个错误: [HttpGet] public HttpResponseMessage Search([ModelBinder(
我有空的 Web API 项目以及使用 VS2015 创建的完整 MVC 项目。我注意到 HttpRequestMessage 在 System.Net.Http 中,这很好,但不适用于下面的 Cre
我正在尝试为我的 ApiController 编写一些单元测试,但遇到了一些问题。有一个名为 Request.CreateResponse 的很好的扩展方法,它对生成响应有很大帮助。 public H
调用这个方法: public HttpResponseMessage PostProduct(Product item) { item = repository.Add(item);
我是一名优秀的程序员,十分优秀!