使用nunit C#上传文件的单元测试用例

Unit test case for uploading file using nunit C#

我正在编写一些单元测试来检查我的网络服务端点。幸运的是,我为 get/post 请求编写了一些测试用例,除了那个之外,它工作正常。 我想写测试用例来检查webservice的文件上传方法。 PostMan 上的网络服务端点是:

请求正文采用 userID 和 fileUpload 属性。

我为此编写了基本代码,但不知道如何在 Nunit 测试用例中将表单数据作为请求主体传递。

        private HttpClient _client;
        
        [Test]
        public async Task UploadPDFfile()
        {
            var response = await _client.PostAsync("http://localhost:5000/documents/");
            
            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
        }

谁能告诉我如何在 Nunit 测试 C# 的 PostAsync 方法中传递表单数据属性来检查文件上传功能。

我喜欢在这种测试中使用 foo 文件。

HttpClient.PostAsync() 有一个名为 content 的参数。 您应该创建一个 HttpContent 实例并使用 post 方法发送它:

        var filePath = "yourFooFilePathHere";

        using (var fs = File.OpenRead(filePath))
        using (var fileContent = new StreamContent(fs))
        {
            var content = new MultipartFormDataContent
            {
                { fileContent, "file", yourFileName }
            };
            content.Add(new StringContent(userId.ToString(), Encoding.UTF8, "application/json"));
            var response = await _client.PostAsync("http://localhost:5000/documents/", content);
        }

请注意,我将创建的 HttpContent 作为参数传递给 PostAsync 方法。