C# 单元测试文件上传至AWS S3
如果文件上传到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
[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);
}