यह मॉडल है, जिसमें दो फ़ील्ड फ़ील्ड1 और फ़ील्ड2 शामिल हैं

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));

    }
}

मेरा असफल Xunit परीक्षण: या मुझे क्या लगता है कि यह होना चाहिए, लेकिन मुझे उचित आकलन के लिए ज्ञान की कमी है: क्या थ्योरी के लिए इनलाइनडेटा के रूप में व्यूमोडेल से फ़ील्ड पास करना संभव है? Ex..pass model.Field1 इनलाइनडाटा में परीक्षण के लिए शून्य और खाली के रूप में। साथ ही, मुझे यह जांचने में समस्या है कि डेटाबेस हैंडलर द्वारा फ़ील्ड 1 को संभाला जा रहा है या नहीं। कोई सलाह?

[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);

    }
0
alin 20 नवम्बर 2018, 10:28

1 उत्तर

सबसे बढ़िया उत्तर

आपको पैरामीटर के रूप में 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
}
0
PMerlet 20 नवम्बर 2018, 10:36