xunit 相关问题

xUnit是遵循特定体系结构的符合单元测试的框架的集合名称。实现因语言而异,但框架应包括测试运行器,测试用例,测试夹具(上下文),测试套件,测试执行,测试结果格式化程序和断言

无法从单元测试项目引用其他.net core项目

我正在尝试使用 xunit 对我的项目进行单元测试。我创建了一个新的 .Net core 类库项目并引用了其他项目,但我想要的类没有显示。 这是公关...

回答 2 投票 0

C# XUnit (.Net 8):要测试的端点中的 IFormFile 参数始终接收为 null

我需要 XUnit 测试下一个端点: /// /// 停止csv文件中的所有账户 /// /// /// 我需要 XUnit 测试下一个端点: /// <summary> /// Cease all account in csv file /// </summary> /// <param name="dispatcher"></param> /// <param name="csvFile">CSV file with format (Id,Name,SID,CeaseDate,Note)</param> /// <param name="ct"></param> /// <returns></returns> [HttpPost("cease/bulk")] [Authorize(Roles = VdcSecurity.Role.ManagementAdmin)] [AllowAnonymous] public async Task<ActionResult<bool>> CeaseBulkAccountAsync( [FromServices][IsSensitive] ICommandDispatcher dispatcher, [FromForm] IFormFile csvFile, [IsSensitive] CancellationToken ct = default ) { var identity = Vdc.Libs.AspNet.Controller.HttpContextExtensions.GetIdentity(HttpContext); var ipAddress = HttpContext.GetIpAddress(); var command = new CeaseBulkCommand(identity, HttpContext.TraceIdentifier) { Stream = csvFile.OpenReadStream(), IpAddress = ipAddress }; var result = await dispatcher.DispatchAsync(_provider, command, ct); return result.ToActionResult(this); } 我的问题是无论我如何创建 IFormFile 对象,它总是被接收为 null。 这是我的尝试之一: const string filePath = "CeaseBulkAccount.csv"; using (var httpClient = ApiClient.HttpClient) { var form = new MultipartFormDataContent(); byte[] fileData = File.ReadAllBytes(filePath); ByteArrayContent byteContent = new ByteArrayContent(fileData); byteContent.Headers.ContentType = MediaTypeHeaderValue.Parse("multipart/form-data"); form.Add(byteContent, "file", Path.GetFileName(filePath)); var result = await httpClient.PostAsync("/api/accounts/cease/bulk", form); } 我到达控制器,但收到的 csvFile 为空。 ApiClient.HttpClient 是我们自己的客户端,但我不介意使用通用客户端。 我不得不说我们的 httpClient“PostAsync”收到了 HttpContent。 第二次尝试: var httpClient = ApiClient.HttpClient; var fileContent = new ByteArrayContent(ReadFully(file)); fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "CeaseBulkAccount.csv" }; var response = await httpClient.PostAsync("/api/accounts/cease/bulk", fileContent, ct); public static byte[] ReadFully(Stream input) { byte[] buffer = new byte[16 * 1024]; using (MemoryStream ms = new MemoryStream()) { int read; while ((read = input.Read(buffer, 0, buffer.Length)) > 0) { ms.Write(buffer, 0, read); } return ms.ToArray(); } } 再次,csvFile 为空。 我们的 PostAsync: // // Summary: // Send a POST request with a cancellation token as an asynchronous operation. // // Parameters: // requestUri: // The Uri the request is sent to. // // content: // The HTTP request content sent to the server. // // cancellationToken: // A cancellation token that can be used by other objects or threads to receive // notice of cancellation. // // Returns: // The task object representing the asynchronous operation. // // Exceptions: // T:System.InvalidOperationException: // The requestUri must be an absolute URI or System.Net.Http.HttpClient.BaseAddress // must be set. // // T:System.Net.Http.HttpRequestException: // The request failed due to an underlying issue such as network connectivity, DNS // failure, server certificate validation or timeout. // // T:System.Threading.Tasks.TaskCanceledException: // .NET Core and .NET 5 and later only: The request failed due to timeout. // // T:System.UriFormatException: // The provided request URI is not valid relative or absolute URI. public Task<HttpResponseMessage> PostAsync([StringSyntax("Uri")] string? requestUri, HttpContent? content, CancellationToken cancellationToken); 传递给form.Add的名称必须与控制器的action方法中的名称匹配; [FromForm] IFormFile csvFile。 因为那个是csvFile,所以你必须添加如下文件。 form.Add(byteContent, "csvFile", Path.GetFileName(filePath)); 通过上述更改,您的第一次尝试效果很好。

回答 1 投票 0

C# - 有没有办法在 Linux 上临时保护文件不被删除?

我目前正在对一段代码进行单元测试,当无法删除文件时,该代码应该抛出异常。 这是我试图测试的代码片段: 公共无效删除文件(字符串路径) { 尝试...

回答 1 投票 0

最小起订量设置使用构造函数参数获取 dbContext

情况 我在这里尝试使用 MOQ 为我的 GroupService 编写一些单元测试。 为了创建 GroupService 的实例,我模拟了 4 个需要通过

回答 2 投票 0

单元测试自动映射器解析器

我正在将 .net 与 xUnit 和 NSubstitute 一起使用。我想对从 UnitPostVModel 到 UnitBLLModel 的映射进行单元测试。使用 UnitImgUrlResolver 时出现错误,提示无法动态创建...

回答 1 投票 0

Xharness 与 xunit 在使用 Android 资产的单元测试中中断

下午好, 我有一个基于 xUnit 的 MAUI 单元测试应用程序 (Android)。 该应用程序有“两个入口点”:测试仪器(无头)和视觉入口点(应用程序)。这大致基于

回答 1 投票 0

如何在Xunit中使用Quartz进行集成测试

我需要测试 Quartz Job。 Quarts 作业的作用是触发改变用户平衡的领域事件。手动它工作得很好。 测试中的问题是作业没有处理发件箱消息...

回答 1 投票 0

如何将依赖注入到XUnit中的IClassFixture中?

我正在使用 XUnit,需要在运行测试套件之前执行一些操作。所以,我尝试使用XUnit的IClassFixture功能。但我找不到将依赖项注入 Fixture 类的方法。我的

回答 2 投票 0

判断注入的服务是否在UnitTest中被调用

我正在尝试测试我正在测试的服务中是否使用了注入的服务,并想知道这是否可能? 公共类 MyService { 私有只读 IInjectedService

回答 1 投票 0

Xunit 验证在模拟记录器中不起作用

我有以下代码, 命名空间 MarketData.Service.Diagnostics { 使用系统; 使用 System.Collections.Generic; 使用系统数据; 使用 Microsoft.Extensions.Logging; 酒吧...

回答 1 投票 0

无法访问 Github Actions 中的 host.docker.internal

我使用 TestContainers 包的集成测试在 macOS 本地运行得很好。但是,它们在 GitHub Actions 中没有成功,因为 host.docker.internal 在那里不可用。 什么是

回答 1 投票 0

如何测试返回 Ok(new { token = tokenStr }); 的函数

这是我的控制器类的函数,我想测试它,但我不知道为什么检查 OkObject 为空。我需要一些建议和解决这个问题的方法: [http获取] 噗...

回答 1 投票 0

使用第三方 API 进行 XUnit 测试

我正在使用第三方API,它将记录插入数据库。我的项目的基本设置是: 存储库 公共类 MyRepository { 公共无效InsertRecord(客户c) { /...

回答 1 投票 0

从测试程序集调用时,Entity Framework Linq Query OfType<T> 失败并出现 InvalidCastException

我正在使用实体框架运行net8.0 aspnet 服务器。我的数据库中的一张表用于“用户”,但它通过鉴别器“买方”和“卖方...”包含 2 种不同的类型。

回答 1 投票 0

Xunit 模拟具体类方法

尝试模拟具体类中的方法时遇到错误 下面是我的代码和我试图为 CoreException 类编写的测试 在 CoreException 内部,我调用 LogMgr,它是一个具体的 c...

回答 2 投票 0

如何为SignalR编写集成测试

我在 Web API 中使用 Signalr。如何对其进行集成测试?我不想模拟集线器,我想处理连接的真实实例并检查结果。 目前我有类似...

回答 1 投票 0

集成测试的条件初始化

我有一个 ASP.NET Core 应用程序和该 API 的集成测试。我使用 xunit 库来编写这些测试。测试具有以下结构: 公共类 AccountControllerTests :IAsyncLifetime...

回答 1 投票 0

单元测试和起订量,最佳解决方案

我有以下场景,我想知道测试我的服务的正确方法是什么。我有 2 个服务和 2 个存储库。 公共类ServiceB:IServiceB { 公共服务A(IRepoB) ...

回答 1 投票 0

如何在集成测试期间更改WebApplicationFactory的连接字符串?

我正在集成测试一个 .NET API,该 API 使用存储在 app.settings.json 文件中的连接字符串和数据库名称值连接到 MongoDB。我正在使用 xUnit 和测试容器来承载...

回答 2 投票 0

Hangfire 与 NSubstitute 的经常性工作

我需要使用 NSubstitute 对我的hangifre 经常性工作进行单元测试,我的服务类如下,现在我需要对其进行测试。 公共类 ItemService :IItemService、IJobConfigurationService {

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.