gpt4 book ai didi

c# - 使用蓝铜矿测试 Azure Blob 存储

转载 作者:行者123 更新时间:2023-12-03 04:13:29 24 4
gpt4 key购买 nike

我有一个使用 Azure Blob 存储的 C# 库。我对此进行了集成测试,该测试使用蓝铜矿 blob 存储模拟器。安装了Azurite nuget package blob.exe 模拟器立即运行并且我的测试通过。但是,我希望测试能够干净地启动和关闭:

  • 启动 - 启动 blob 存储模拟器
  • 关闭 - 清理临时存储并停止模拟器

有人有一个简洁的模式吗?

最佳答案

我最终得到了以下解决方案:

(a) 作为开发设置的一部分,将 azurite 下载到已知位置并设置环境变量以指向 blob.exe:

安装BlobExe.bat:

nuget restore packages.config -DirectDownload -PackagesDirectory "..\packages"

set BLOB_EXE="%CD%\..\packages\Azurite.2.6.5\tools\blob.exe"

packages.config:

<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="azurite" version="2.6.5" targetFramework="net471" />
</packages>

(b) 在测试中,使用帮助程序类来启动和停止 blob.exe。

using System;
using System.Diagnostics;
using System.IO;

namespace AltostratusEventsTests
{
// https://stackoverflow.com/questions/55043372/testing-azure-blob-storage-using-azurite
public class AzuriteBlobEmulator : IDisposable
{
private Process _blobProcess;

public AzuriteBlobEmulator()
{
StartEmulator();
}

public void Dispose()
{
StopEmulator();
}

private void StartEmulator()
{
_blobProcess = new Process();
_blobProcess.StartInfo.FileName = BlobDotExePath();
_blobProcess.StartInfo.Arguments = BlobDotExeArgs();
_blobProcess.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;
_blobProcess.Start();
}

private void StopEmulator()
{
try
{
_blobProcess.Kill();
_blobProcess.WaitForExit();
}
catch
{

}
}

private string BlobDotExePath()
{
var blobPath = Environment.GetEnvironmentVariable("BLOB_EXE");
if (string.IsNullOrEmpty(blobPath))
{
throw new NotSupportedException(@"

The BLOB_EXE environment variable must be set to the location of the azurite blob emulator.
This can be done by running InstallBlobExe.bat

");
}
return blobPath;
}

private string BlobDotExeArgs()
{
return "-l " + Directory.GetCurrentDirectory();
}
}
}

关于c# - 使用蓝铜矿测试 Azure Blob 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55043372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com