C# 单元测试文件上传至AWS S3

C# 单元测试文件上传至AWS S3,c#,unit-testing,amazon-web-services,C#,Unit Testing,Amazon Web Services,如果文件上传到AWS S3存储桶成功,那么进行单元测试的最佳方法是什么 现在我正在做以下工作: [Test] public void UploadFileToAWS() { // Arrange var bucket = "bucketName"; var keyName = "test_upload.txt"; var originalFile = n

如果文件上传到AWS S3存储桶成功,那么进行单元测试的最佳方法是什么

现在我正在做以下工作:

        [Test]
        public void UploadFileToAWS()
        {
            // Arrange
            var bucket = "bucketName";
            var keyName = "test_upload.txt";
            var originalFile = new FileStream(@"C:\test.txt", FileMode.Open, FileAccess.Read);

            // Act
            var aws = new AmazonWebServicesUtility(bucket);
            var awsUpload = aws.UploadFile(keyName,originalFile);

            // Assert
            Assert.AreEqual(true, awsUpload);
        }
UploadFile()方法取自使用FileStream上载到AWS的

我不喜欢这种方法,因为它需要一个本地文件(C:\test.txt)——所以如果通过版本控制共享,这个单元测试将无法工作。
如何修改此单元测试,使其不依赖于本地文件

使用
System.IO.Path.GetTempPath()
创建一个临时文本文件,我上传该文件并在单元测试中用作比较,这有意义吗

我对单元测试相当陌生,所以我很高兴您能为我指出任何方向:-)


多谢各位

不要从磁盘上的文件创建流,而是使用
MemoryStream
。这样,插入到文件中的文本在代码中是一个常量,也可以用于下载文件和测试整个往返过程。因此,代码取自:

现在您也可以编写此测试:

[Test]
public void DoesDownloadGetTheCorrectValue()
{
    //This implementation is up to you
    var downloadedString = GetFileFromAWSSomehow();

    Assert.AreEqual(downloadedString, StringToTestWith);
}

为什么不依赖文件流(例如)就不能创建自己的
?这样你就可以下载它并测试它是否包含一个已知的值。太棒了!这正是我想要的。谢谢DavidG:-)仅供参考:如果有人正在寻找如何实现@DavidG在从AWS检索文件时提到的
GetFileFromAWSSomehow()
方法。
[Test]
public void DoesDownloadGetTheCorrectValue()
{
    //This implementation is up to you
    var downloadedString = GetFileFromAWSSomehow();

    Assert.AreEqual(downloadedString, StringToTestWith);
}