我正在尝试为我的 AzureBlobRepository 编写单元测试。存储库在构造函数中接收一个 CloubBlobClient。我想模拟客户端,但这给出了一个例外:
using (var mock = AutoMock.GetLoose())
{
var mockClient = mock.Mock<CloudBlobClient>();
}
Run Code Online (Sandbox Code Playgroud)
无法在类型为“Microsoft.WindowsAzure.Storage.Blob.CloudBlobClient”的多个长度为 2 的构造函数之间进行选择。在注册组件时,使用 UsingConstructor() 配置方法显式选择构造函数。
当然,在我的单元测试中,我没有注册任何东西,因此该消息不是很有帮助。
我还尝试了其他方法,例如提供 NameParameters、TypedParameters 或调用 mock.Create 代替 mock.Mock,但我尝试的所有方法都返回相同的异常消息。
(同样的问题也出现在 CloudBlobContainer 上)
此处实现接口后的 UPDATE 是我编写的单元测试示例:
[TestMethod]
public void AzureBlobRepository_GetByIdAsync_ReturnsContent()
{
Guid blobId = Guid.NewGuid();
Guid directoryName = Guid.NewGuid();
string containerName = "unittest";
using (var mock = AutoMock.GetLoose())
{
var mockClient = mock.Mock<ICloudBlobClient>();
var mockContainer = mock.Mock<ICloudBlobContainer>();
var mockDirectory = mock.Mock<ICloudBlobDirectory>();
// notice that we're not using AutoMock here, it fails to create …Run Code Online (Sandbox Code Playgroud)