如何模拟 CreateResponse<T>HttpRequestMessage 上的扩展方

1

本文介绍了如何模拟 CreateResponse<T>HttpRequestMessage 上的扩展方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我正在使用 ASP.Net MVC 4 RC 的 ApiController,我正在尝试对 GET 方法进行单元测试.

I'm using ASP.Net MVC 4 RC's ApiController and I'm trying to unit test a GET method.

此方法使用 HttpRequestMessage 上的 CreateResponse<T> 方法,但我不知道如何模拟它或使其正常运行.

This method uses the CreateResponse<T> method that's on the HttpRequestMessage, but I've no idea how to mock this or to make it function correctly.

方法的主体包含以下内容:

The method's body contains this:

MediaTypeHeaderValue header = new MediaTypeHeaderValue(versionedSmartBlock.ContentType);
var response = Request.CreateResponse<SmartBlock>(
    HttpStatusCode.OK, versionedSmartBlock, header);

在我的单元测试中,我创建了一个空的 HttpRequestMessage:

Within my unit test, I create an empty HttpRequestMessage:

CallsController api = new CallsController(
    managerMock.Object, config, adapterFactoryMock.Object);
api.Request = new HttpRequestMessage(
    HttpMethod.Get, "http://localhost/Initiate?ern=%2B44123456789");    
var response = api.Get("+44123456789", null);

但它只是生成一个InvalidOperationException:

请求没有关联的配置对象或提供的配置为空.

The request does not have an associated configuration object or the provided configuration was null.

有没有人知道如何配置 HttpRequestMessage 以使 CreateResponse 方法真正发挥作用?

Has anyone got any pointers on how I can configure the HttpRequestMessage so that the CreateResponse method actually does its job?

推荐答案

通过指定一个空配置解决了这个问题:

This was solved by specifying an empty configuration:

request.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, new HttpConfiguration());

我从这里得到了答案

使用 Request.CreateResponse 进行 ASP.NET WebApi 单元测试

这篇关于如何模拟 CreateResponse&lt;T&gt;HttpRequestMessage 上的扩展方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

C# 中的多播委托奇怪行为?
Multicast delegate weird behavior in C#?(C# 中的多播委托奇怪行为?)...
2023-11-11 C#/.NET开发问题
6

参数计数与调用不匹配?
Parameter count mismatch with Invoke?(参数计数与调用不匹配?)...
2023-11-11 C#/.NET开发问题
26

如何将代表存储在列表中
How to store delegates in a List(如何将代表存储在列表中)...
2023-11-11 C#/.NET开发问题
6

代表如何工作(在后台)?
How delegates work (in the background)?(代表如何工作(在后台)?)...
2023-11-11 C#/.NET开发问题
5

没有 EndInvoke 的 C# 异步调用?
C# Asynchronous call without EndInvoke?(没有 EndInvoke 的 C# 异步调用?)...
2023-11-11 C#/.NET开发问题
2

Delegate.CreateDelegate() 和泛型:错误绑定到目标方法
Delegate.CreateDelegate() and generics: Error binding to target method(Delegate.CreateDelegate() 和泛型:错误绑定到目标方法)...
2023-11-11 C#/.NET开发问题
14