Поскольку исходный вопрос был неполным, мне пришлось сделать некоторые предположения, когда показывал, что вы должны были сделать, чтобы протестировать предполагаемый класс.
Допустим, у вас есть класс, который выглядит примерно так
public class GetClientDetails {
private readonly IOurApiService _client;
public GetClientDetails(IOurApiService ourService) {
_client = ourService;
}
public async Task<IList<Channels>> GetChannelsAsync() {
try {
await _client.CreateSessionAsync().ConfigureAwait(false);
var channel = await _client.GetChannelsAsync();
var channels = new List<Channels>();
channels.Add(channel);
return channels;
} catch (Exception ex) {
return null;
}
}
}
Обратите внимание на явную зависимость IOurApiService
класса объекта.
Чтобы выполнить модульное тестирование GetChannelsAsync
в отдельности, вам необходимо смоделировать / заглушить зависимость класса, чтобы тестируемый метод работал должным образом при выполнении.
Например
public class GetDetailsTest {
[Fact]
public async Task GetChannelsAsync_Should_Return_Channels() {
//Arrange
var channel = new Channels{
//{channelvalue}
};
IList<Channels> expected = new List<Channels>() {
channel
};
var serviceMock = new Mock<IOurApiService>();
serviceMock.Setup(_ => _.CreateSessionAsync()).Returns(Task.CompletedTask);
serviceMock.Setup(_ => _.GetChannelsAsync()).ReturnsAsync(channel);
var subject = new GetClientDetails(serviceMock.Object);
//Act
var actual = await subject.GetChannelsAsync();
//Assert
Assert.Equal(expected, actual);
}
}