gpt4 book ai didi

c# - 如何在 C# 中模拟 SOAP 服务类

转载 作者:行者123 更新时间:2023-12-03 23:56:48 25 4
gpt4 key购买 nike

我想在这里伪造 getCustomerName 服务调用并用假数据模拟它

我的类是“CustomerName”,它调用 SOAPService 调用,该调用返回 CustomerNumber 的 CustomerName。我想伪造 SOAPService 调用以返回一些假数据。

客户名称类:

using (WebService.WebServiceClient CustomerData = new WebService.WebServiceClient ())
{
WebServiceClient.TestResponse resp = CustomerData.getCustomerName(customerNumber);
resp.CustomerName;
}

我试着做这些
var FakeWebService = A.Fake<WebServiceClient>();
var FakeCustomerName=A.Fake<CustomerName>();

然后我在这里伪造了电话,虚假的回应是有值(value)的
    A.CallTo(WebServiceClient.CustomerNumber).WithNonVoidReturnType().Returns(FakeResponse); 
fakeCustomerName = FakeCustomerData.GetCustomerName(CustomerNumber);

我面临的问题是它从实际端点而不是假数据获取数据?

我不清楚该怎么做..

最佳答案

与其直接引用 web 服务并因此尝试模拟 web 服务本身,不如创建一个接口(interface)来保存 web 服务提供的功能。

public interface ICustomerData
{
CustomerName GetCustomerName(CustomerNumber number);
}

然后,做两个实现。一种调用实际的 Web 服务,另一种可用于测试:
public class CustomerData : ICustomerData
{
CustomerName GetCustomerName(CustomerNumber number)
{
return CustomerData.GetCustomerName(number);
}

public CustomerData()
{
CustomerData = new WebService.WebServiceClient ();
}
private WebService.WebServiceClient CustomerData;
}


public class DelegatedCustomerData : ICustomerData
{
public Func<CustomerNumber,CustomerName> GetCustomerName {get;set;}


CustomerName ICustomerData.GetCustomerName(CustomerNumber number) => GetCustomerName(number);

}

后一个委托(delegate)类只是如何模拟类的一个例子,但我个人更喜欢它。

关于c# - 如何在 C# 中模拟 SOAP 服务类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44405441/

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