2016-09-07 10 views
6

में परिणाम लौटाया गया तो Xunit में सामग्री मान कैसे प्राप्त करें मेरे पास Xunit का उपयोग करके एक यूनिट टेस्ट प्रोजेक्ट है और जिस विधि का हम परीक्षण कर रहे हैं IActionResult लौटाता है।जब IActionResult प्रकार

मैंने देखा कि कुछ लोग IActionResult की सामग्री प्राप्त करने के लिए "नेगोशिएटेड कॉन्टेंट रिसेट" का उपयोग करने का सुझाव देते हैं लेकिन यह जुनीट में काम नहीं करता है।

तो मुझे आश्चर्य है कि Xunit में IActionResult का सामग्री मान कैसे प्राप्त करें?

public void GetTest() 
{ 
    var getTest = new ResourcesController(mockDb); 

    var result = getTest.Get("1"); 

    //Here I want to convert the result to my model called Resource and 
    //compare the attribute Description like below. 
    Resource r = ?? //to get the content value of the IActionResult 

    Assert.Equal("test", r.Description); 
} 

किसी को भी कैसे XUnit में यह करने के लिए पता है:

टेस्ट कोड उदाहरण नीचे दी गई है?

उत्तर

7

आप जो अपेक्षा करते हैं उस पर निर्भर करता है। पिछले उदाहरण से आपने इस तरह की एक क्रिया का उपयोग किया था।

[HttpGet("{id}")] 
public IActionResult Get(string id) {   
    var r = unitOfWork.Resources.Get(id); 

    unitOfWork.Complete(); 

    Models.Resource result = ConvertResourceFromCoreToApi(r); 

    if (result == null) { 
     return NotFound(); 
    } else { 
     return Ok(result); 
    }   
} 

विधि या तो एक OkObjectResult या एक NotFoundResult वापस आ जाएगी कि। यदि परीक्षण के अंतर्गत विधि की अपेक्षा यह Ok() वापस जाने के लिए के लिए है, तो आप आप क्या उम्मीद करने के लिए परीक्षण में परिणाम डाली और फिर अपने दावे करने के लिए कि

public void GetTest_Given_Id_Should_Return_OkObjectResult_With_Resource() { 
    //Arrange 
    var expected = "test"; 
    var controller = new ResourcesController(mockDb); 

    //Act 
    var actionResult = controller.Get("1"); 

    //Assert 
    var okObjectResult = actionResult as OkObjectResult; 
    Assert.NotNull(okObjectResult); 

    var model = okObjectResult.Value as Models.Resource; 
    Assert.NotNull(model); 

    var actual = model.Description; 
    Assert.Equal(expected, actual); 
} 
+0

पर की जरूरत है किस बारे में है, तो ठीक है में गतिशील वस्तु लौटने, उदाहरण के लिए: ठीक है (नया {टोकन = "", समाप्ति = दिनांक समय.अब। एडहॉर्स (1)}; – mesut

संबंधित मुद्दे