.Net Core中有后端代码。需要编写集成测试。但是,此代码对 ClickHouse 字典执行查询。字典是从其他字典创建的,其他字典也是从字典创建的。目前,在输入测试数据之后、执行查询之前,我设置了一个等于所有字典 LIFETIME 总和的暂停。但我认为这不是最佳方法,因为...... 测试用例的执行时间大大增加。
有没有关于如何测试这一点的想法,以免使用等于所有字典 LIFETIME 总和的暂停?
.Net Core中有后端代码。需要编写集成测试。但是,此代码对 ClickHouse 字典执行查询。字典是从其他字典创建的,其他字典也是从字典创建的。目前,在输入测试数据之后、执行查询之前,我设置了一个等于所有字典 LIFETIME 总和的暂停。但我认为这不是最佳方法,因为...... 测试用例的执行时间大大增加。
有没有关于如何测试这一点的想法,以免使用等于所有字典 LIFETIME 总和的暂停?
主题
有一个方法
public static async Task<string> DownloadFile(string url, string path)
{
byte[] data;
using (var client = new HttpClient())
using (HttpResponseMessage response = await client.GetAsync(url))
using (HttpContent content = response.Content)
{
data = await content.ReadAsByteArrayAsync();
using (FileStream file = System.IO.File.Create(path))
file.Write(data, 0, data.Length);
}
return "OK";
}
尝试从 digikey.com 下载图像时,该方法会挂起。
图片链接示例
https://media.digikey.com/Renders/Analog%20Devices%20Renders/8-SOIC.jpg
如果我上传这张图片,那么一切都很好。
https://i.imgur.com/I5Tl0Q2.jpg
如果我通过 Postman 发送一个简单的 GET 请求,我会在响应中得到一张图片。
我知道网站不喜欢请求中的某些内容,但是如何理解呢?
如何调试代码和下载图像?
UDP
这是邮递员发送的curl
curl -X GET \
https://media.digikey.com/Renders/Analog%20Devices%20Renders/8-SOIC.jpg \
-H 'cache-control: no-cache' \
-H 'content-type: application/x-www-form-urlencoded' \
-H 'postman-token: 6580b7fd-5491-20a5-67a0-63119102a341'
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("GET"), "https://i.imgur.com/I5Tl0Q2.jpg"))
{
request.Headers.TryAddWithoutValidation("cache-control", "no-cache");
request.Headers.TryAddWithoutValidation("postman-token", "790e386d-6446-c17c-947a-fb0ac2852685");
var response = await httpClient.SendAsync(request);
}
}
我得到了完全相同的故事。下载挂起。它从imgur正常加载。
是否可以在 Linux PC 上编译 .net 5 程序以在 Mac OS X 上使用?
有一堂课
public class LongRunningStatus: IRunningStatus
{
#region Implementation of IRunningStatus
public LongRunningStatus()
{
Status = "Constructor";
}
/// <inheritdoc />
public string Status { get; set; }
#endregion
}
在ConfigureServices
我这样添加的方法中:
services.AddTransient<IRunningStatus, LongRunningStatus>();
结果,在控制器方法中
public ActionResult<string> Status([FromServices] IRunningStatus rs)
我每次都得到一个带有“”的实例Constructor
。
如果我在 Start 类的构造函数中,创建一个实例IRunningStatus
,然后分配它
services.AddTransient<IRunningStatus, LongRunningStatus>(x => _runningStatus);
然后该服务开始表现得好像它是由AddSingleton
. 那些。构造函数只被调用一次。而且我可以更改字段的值,Status
并且更改将在另一个控制器中可见。
这种行为让我有点困惑。应该是这样吗?
我需要延迟一分钟发送一条消息,之后我的 AzureFunction 将处理该消息。如何在 .NET Core 2.0 项目中做到这一点?