Как написать оператор Assert для коллекции в Xunit? - PullRequest
0 голосов
/ 13 сентября 2018

Я использую тестовый фреймворк xUnit для написания некоторого модульного теста. Ниже приведен фрагмент кода, который проверяет, является ли коллекция azColumns пустой или нет. Тем не менее, я подумал, есть ли лучший способ утверждать коллекцию azColumns без использования двух Assert внутри оператора if..else block?

Может быть, в одном выражении Assert есть смысл?

private static string LoadJsonFile()
{
    const string fileName = "templateFileContent_1.json";
    var filePath = Path.Combine(Directory.GetCurrentDirectory(), $@"Data\{fileName}");

    return !File.Exists(filePath) ? string.Empty : filePath;
}

private static string GetJsonData()
{
    JObject jsonObject;
    var jsonFile = LoadJsonFile();

    if (string.IsNullOrEmpty(jsonFile)) return string.Empty;

    using (var reader = new StreamReader(jsonFile))
    {
        var jsonData = reader.ReadToEnd();
        jsonObject = JObject.Parse(jsonData);
    }

    return jsonObject.ToString();
}

private static JObject GetBaseConfigurationObject()
{
    var json = GetJsonData();

    if (string.IsNullOrEmpty(json)) return null;

    var baseObject = JsonConvert.DeserializeObject<JObject>(json);
    return baseObject;
}

[Fact]
public void ExportColumns_Should_Not_Be_Empty_Or_Null()
{
    // Arrange
    IEnumerable<az_Columns> azColumns = null;

    // Act
    var baseConfig = GetBaseConfigurationObject();
    var fileContent = baseConfig?["templateFileContent"];

    if (fileContent != null)
    {
        var baseConfiguration = fileContent.ToObject<BaseConfiguration>();
        azColumns = baseConfiguration?.ExportData?.az_Columns;
    }

    // Assert
    if (azColumns == null)
    {
        Assert.Null(azColumns);
    }
    else
    {
        Assert.NotEmpty(azColumns);
    }
}

Любые отзывы приветствуются.

1 Ответ

0 голосов
/ 13 сентября 2018

Если вы заинтересованы в использовании Свободные утверждения , вы можете утверждать следующее

[Fact]
public void ExportColumns_Should_Not_Be_Empty_Or_Null() {
    //Arrange
    //...omitted for brevity

    //Act
    //..omitted for brevity

    //Assert
    azColumns.Should().NotBeNullOrEmpty();
}

После выполнения теста вы утверждаете, что коллекция не должна быть нулевой или пустой. Если он нулевой или пустой, тест не пройден, в противном случае он пройдет, как ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...