我已经使用 Cosmosdb 容器为其抽象类。 我需要使用 Moq库
的模拟 xUnit测试盒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);
}**
}
答案 0 :(得分:0)
您必须从传递到存储库构造函数的依赖项中模拟整个链。
var smsTemplates = new[]
{
new SmsTemplate { Name = "Name1" },
new SmsTemplate { Name = "Name3" }
}.AsQueryable()
.OrderBy(x => x.Name);
var container = new Mock<Container>();
var client = new Mock<CosmosClient>();
client.Setup(x => x.GetContainer(It.IsAny<string>(), It.IsAny<string>())
.Returns(container.Object);
container.Setup(x => x.GetItemLinqQueryable<SmsTemplate>(It.IsAny<bool>())
.Returns(smsTemplates);
var repository = new SmsTemplateRepository(client.Object, ....);