gpt4 book ai didi

c# - 使用 Web 请求为函数编写单元测试

转载 作者:太空狗 更新时间:2023-10-30 00:06:04 25 4
gpt4 key购买 nike

这是我要为其编写单元测试的函数:

public object RequestAndSerializeJSON(string url, Type type) {
var request = (HttpWebRequest)WebRequest.Create(url);
request.Accept = "application/json";

var response = request.GetResponse();
using (var responseStream = response.GetResponseStream())
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(type);
return serializer.ReadObject(responseStream);
}
}

我第一个测试这个的想法是传递一个路径到一个文件,其中包含用于 url 的测试数据,但我不能这样做,因为我正在将它转换为 HttpWebRequest并且它会引发文件路径错误,因为它会为文件路径创建 FileWebRequest

做这件事的好方法是什么?我正在使用 Visual Studio 测试工具进行测试。

最佳答案

你这里有问题。如您所见,您的代码做了两件事。它获取请求,然后创建一个对象。

如果你想对其进行单元测试,我建议拆分功能(无论如何这是一件好事)

(经验法则:如果您的函数名称很长,使用“和”字或描述多个事物,那么您应该重构它。我们需要具有小责任的小方法,因此我们可以替换它们或扩展它们他们或将来更容易地与他们一起做某事)。

有点像..

public WebRequest GetRequest(string url);
public object DeSerializeJSON(WebRequest request, Type type);

可能有用。

现在您可以在测试方法中注入(inject)模拟请求并相应地测试功能。

关于c# - 使用 Web 请求为函数编写单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6050096/

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