我需要xUnit测试用例。 Microsoft.Azure.Cosmos容器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我需要xUnit测试用例。 Microsoft.Azure.Cosmos容器相关的知识,希望对你有一定的参考价值。
我已使用Cosmosdb容器为其抽象类。我需要使用Moq库和mock的xUnit test
盒public class SmsTemplateRepository : ISmsTemplateRepository
private Container _container;
public SmsTemplateRepository(CosmosClient dbClient, string databaseName, string containerName)
_container = dbClient.GetContainer(databaseName, containerName);
public IEnumerable<SmsTemplate> GetAll()
return _container.GetItemLinqQueryable<SmsTemplate>(true);
**public async Task InsertAsync(SmsTemplate smsTemplate)
await _container.CreateItemAsync(smsTemplate);
**
答案
您必须从传递到存储库构造函数的依赖项中模拟整个链。
- 创建要模拟GetAll返回的模板的列表:
var smsTemplates = new[]
new SmsTemplate Name = "Name1" ,
new SmsTemplate Name = "Name3"
.AsQueryable()
.OrderBy(x => x.Name);
- 创建模拟的CosmosClient和模拟的容器并设置CosmosClient模拟以返回模拟的容器:
var container = new Mock<Container>();
var client = new Mock<CosmosClient>();
client.Setup(x => x.GetContainer(It.IsAny<string>(), It.IsAny<string>())
.Returns(container.Object);
- 设置模拟容器以返回模板列表,并将模拟的CosmosClient传递给存储库的构造函数:
container.Setup(x => x.GetItemLinqQueryable<SmsTemplate>(It.IsAny<bool>())
.Returns(smsTemplates);
var repository = new SmsTemplateRepository(client.Object, ....);
- GetAll现在将返回smsTemplates
以上是关于我需要xUnit测试用例。 Microsoft.Azure.Cosmos容器的主要内容,如果未能解决你的问题,请参考以下文章
如何在需要 UserManager 但使用内存数据库的 XUnit 中测试方法