首页 > 解决方案 > 单元测试时如何在 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);
        }

标签: c#unit-testingmockingblazor

解决方案


推荐阅读