siddhipur
siddhipur

Reputation: 121

Helper method for testing JsonResult in Nunit

Here is my controller that returns a JSON.

public JsonResult GetValues()
{
    return Json(
    new{
        title = new {
            text = "Hello World"
        },
        xAxis = new {
            type = "List of countries"
            labels = new {
                rotation = 90
            }
        }
    },JsonRequestBehavior.AllowGet);
}

And in my Nunit, i am testing as follows:

  [Test]
    public void TestGetValues()
    {
        var controller = new HelloWorldController();
        var values = controller.GetValues() as JsonResult;

        Assert.IsNotNull(data);
        var title = values.Data.GetType().GetProperty("title")
                    .GetValue(values.Data,null);
        var text = title.GetType().GetProperty("text").GetValue(title);
        Assert.IsNotNull(text);

    }

This works fine but i have to test several methods that has same properties which will require me to write same thing over and over again. How to write a helper method so that i can just pass in the controller and the property i want to test. Something like this:

var checkText = GetJSonProperties(controllername, "data/title/text");
var checkXais = GetJSonProperties(controllernmae, "data/xAxis/Type");

How can i achieve this ?

Upvotes: 2

Views: 1024

Answers (1)

Padraic
Padraic

Reputation: 667

I would just use a dynamic type.

var controller = new HelloWorldController();
dynamic values = controller.GetValues();

var title = (string)values.title;

Saves you writing helper methods, which themselves may need to be tested!

Upvotes: 1

Related Questions