Тест Xunit / NET.Core / Теория, основанная на InlineData, которая берет значения моих полей из моей модели при тестировании контроллера - PullRequest
0 голосов
/ 20 ноября 2018

Это модель, которая содержит два поля Field1 и Field2

public class DemoViewModel
{
    public string Field1{ get; set; }
    public string Field2{ get; set; }
}

Ниже у нас есть контроллер

public class SearchDemoController: BaseController
{
    [HttpPost]
    [AllowAnonymous]
    public IActionResult SearchDemo(DemoViewModel model)
    {


        if (string.IsNullOrWhiteSpace(model.Field1))
            throw new NotImplementedException("Error page - wrong Field1 chosen");

        var Field1= DatabaseHandler<Field1>.Get(a => a.IsoName.ToLower().Contains(model.Field1));

    }
}

My Failed Xunit Test: или что я думаю, что должнослучается, но мне не хватает знаний для правильной оценки: возможно ли передать поля из модели представления как inlinedata для теории?ex..pass model.Field1 как ноль и как пустой для теста в InlineData.Кроме того, у меня есть проблема в том, как проверить, обрабатывается ли Field1 обработчиком базы данных.Любой совет?

[Theory]
[InlineData] -Field1 Value 1
[InlineData] -Field1 Value 2
[InlineData] -Field1 Value 3
    public void SearchDemo_DbHandlerContainsModelField1_WhenField1IsContained()
    {
        //Arrange

        var model = new DemoViewModel();
        model.Field1= "Value1"; //i wish somehow to add the values in InlineData
        var language = DatabaseHandler<Field1>.Get(a => a.IsoName.ToLower().Contains(model.Language));

        //Act

        //Assert
        Assert.NotNull(model.Field1);
        Assert.Equal("Value1",model.Field1);

    }

1 Ответ

0 голосов
/ 20 ноября 2018

Необходимо указать Field1 значение в качестве параметра:

[Theory]
[InlineData("Value1")]
[InlineData("Value2")]
[InlineData("Value3")]
[InlineData(null)]
public void SearchDemo_DbHandlerContainsModelField1_WhenField1IsContained(string field1)
{
    //Arrange
    var model = new DemoViewModel();
    model.Field1 = field1;

    //Your stuff
}
...