c# - 单元测试时如何在 Blazor 中模拟 InputFile (csv)?
问题描述
我InputFile
在 Blazor 中使用来接受来自用户的 csv 文件。在进行测试时,我想提供一个物理文件,InputFile
或者我想模拟一个 CSV 文件并进行测试。
我创建了一个模拟如下,但我不知道如何给Name
这个模拟提供模拟数据(在文件中):
var mockIbrowser = new Mock<IReadOnlyList<IBrowserFile>>();
实际测试用例:
[Fact]
public void FileUploadTest()
{
using var ctx = new TestContext();
var mockIbrowser = new Mock<IReadOnlyList<IBrowserFile>>();
var optionsMock = Substitute.For<IOptions<RemoteBrowserFileStreamOptions>>();
ctx.Services.AddSingleton<IOptions<RemoteBrowserFileStreamOptions>>(optionsMock);
ctx.JSInterop.SetupVoid("Blazor._internal.InputFile.init", x => true);
//Arrange
var comp = ctx.RenderComponent<FileProcess>();
//expected
string expectedMarkupButton = @"<button type=""submit"" class=""btn btn-outline-primary"" @btnstatus>Upload Selected File(s)</button>";
string expectedMarkupMsg = @"<h3 style=""color:Black;"">All Tasks performed successfully</h3>";
//Action
comp.Find("InputFile").Click();
comp.Find("form").Submit();
//Matched ?
comp.Find("button").MarkupMatches(expectedMarkupButton);
comp.Find("h3").MarkupMatches(expectedMarkupMsg);
}
解决方案
推荐阅读
- node.js - 查询 AWS RDS PostgreSQL 数据库时 Firebase 函数超时
- docker - 是否可以从已使用的 Docker 容器创建新的 Docker 映像?
- java - 带有图像的请求中的管道损坏(写入失败)网关 x 服务
- c# - 在 Unity 中存储只读数据的良好做法
- mysql - MySQL DATE_ADD 语句根据书但不会返回结果
- excel - 从 Windows 文件夹读取的 Outlook 消息对于某些值是空白的
- sql-server - 如何在未透视表中创建计算行?
- mongodb - Mongodb:按id过滤父级时增加嵌套数组中的值
- algorithm - RSA加密后用户如何访问他的任何消息?
- ms-access - 仅在列表表单中显示每个员工的最新条目