gpt4 book ai didi

c# - 如何模拟 WebOperationContext 进行单元测试?

转载 作者:太空狗 更新时间:2023-10-29 21:05:10 26 4
gpt4 key购买 nike

我正在尝试为以下 WCF Rest 服务的 GetAwesomeResultsAsXml() 编写单元测试(更多的是集成测试)。
如何处理 WebOperationContext 模拟方面?
最好的方法是什么?

public class AwesomeRestService : AwesomeRestServiceBase, IAwesomeRestService
{
public AwesomeSearchResults<AwesomeProductBase> GetAwesomeResultsAsXml()
{
return GetResults();
}

private static AwesomeSearchResults<AwesomeProductBase> GetResults()
{
var searchContext = AwesomeSearchContext
.Parse(WebOperationContext.Current);
..............
..............
..............
}


}

[ServiceContract]
public interface IAwesomeRestService
{
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Bare,
UriTemplate = "/search/xml")]
AwesomeQueryResults<AwesomeProductBase> GetAwesomeResultsAsXml();


}







public class AwesomeSearchContext
{
................
................
................
public static AwesomeSearchContext Parse
(WebOperationContext operationContext)
{
return WebOperationContext.Current != null ? new
AwesomeSearchContext(operationContext.IncomingRequest.UriTemplateMatch.QueryParameters) : null;
}
}

最佳答案

我遇到了同样的问题。我想在没有任何 IIS 的情况下对 WCF 服务函数(对于 IOauth2 接口(interface),如下例)进行单元测试。这是准备工作的代码片段。

// Prepare WebOperationContext
var factory = new ChannelFactory<IOauth2>(
new WebHttpBinding(),
new EndpointAddress("http://localhost:80"));

OperationContext.Current = new OperationContext(factory.CreateChannel() as IContextChannel);
Debug.Assert(WebOperationContext.Current != null);

关于c# - 如何模拟 WebOperationContext 进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16068001/

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