Я пытаюсь создать набор тестовых методов, используя Moq для покрытия внешних зависимостей. Эти зависимости асинхронны по своей природе, и я обнаружил, что когда они ожидаются, они никогда не возвращаются, поэтому я не уверен, что мне не хватает.
Сам тест очень прост.
[TestMethod]
public async Task UpdateItemAsync()
{
var repository = GetRepository();
var result = await repository.UpdateItemAsync("", new object());
Assert.IsNotNull(result);
}
Приведенный выше метод GetRepository
устанавливает на них различные фиктивные объекты, в том числе вызываемые программой установки.
private static DocumentDbRepository<object> GetRepository()
{
var client = new Mock<IDocumentClient>();
var configuration = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
client.Setup(m => m.ReplaceDocumentAsync(It.IsAny<Uri>(), It.IsAny<object>(), It.IsAny<RequestOptions>()))
.Returns(() =>
{
return new Task<ResourceResponse<Document>>(() => new ResourceResponse<Document>());
});
var repository = new DocumentDbRepository<object>(configuration, client.Object);
return repository;
}
Код, который тестируется, приведен ниже, и при выполнении строки с ожиданием он никогда не возвращается.
public async Task<T> UpdateItemAsync(string id, T item)
{
var result = await Client.ReplaceDocumentAsync(UriFactory.CreateDocumentUri(DatabaseId, CollectionId, id), item);
return result.Resource as T;
}
Я уверен, что ошибка в методе Setup
объекта Moq в методе GetRepository
, но я не уверен, в чем проблема.