Я использую клиент для взаимодействия с CloudMQTT API . Я пытаюсь создать пользователя , но после попытки кода, приведенного ниже, я не смог создать пользователя. При использовании кода, предоставленного в репозитории Github для этого проекта, я заметил, что не могу использовать метод ShouldThrow()
(очевидно, он должен быть предоставлен Fluent Assertions ).
Я нашел сообщение в StackOverflow, которое выглядело очень похоже на проблему, с которой я столкнулся. В вопросе упоминается, что FluentAssertions не поддерживает асин c методы. Однако в примере кода для клиента я вижу, что метод ShouldThrow()
используется независимо от этого факта.
Как мне заставить ShoudldThrow()
работать или мне даже нужно, чтобы он работал (потому что я думаю, что в этом коде это требуется только в том случае, если вы применяете модульное тестирование)?
Это то, что уже опробовано:
public static async void CreateCloudUser(ICloudMqttApi client)
{
var users = await client.GetUsers();
Console.WriteLine($"Creating a user. Current users available: {users.Count}");
var expectedUser = new NewUser
{
Password = $"{Guid.NewGuid()}",
Username = $"staging-{Guid.NewGuid()}",
};
var createUserResponse = await client.CreateUser(expectedUser);
createUserResponse.IsSuccessStatusCode.Should().BeTrue();
var actual = await client.GetUser(expectedUser.Username);
actual.Should().NotBeNull();
actual.Username.Should().Be(expectedUser.Username);
//users.Should().Contain(u => u.Username == expectedUser.Username); // <-- This throws an exception as well, but not of importance for this specific question.
Func<Task> verifyUser = async () => await client.GetUser(expectedUser.Username);
verifyUser.ShouldThrow<ApiException>() // <-- Not recognized
.And.StatusCode.Should().Be(HttpStatusCode.NotFound);
Console.WriteLine($"Created a user. Current users available: {users.Count}");
}
Клиент определен в способ, указанный в документации для клиента прямо перед вызовом метода:
var client = CloudMqttApi.GetInstance("username", "password");
Число пользователей будет иметь одинаковое число до и после выполнения метода (который, очевидно, должен был увеличиться).