Asp.net mvc 3 断言可能不存在的内容-nullreferenceexception

Asp.net mvc 3 断言可能不存在的内容-nullreferenceexception,asp.net-mvc-3,nunit,Asp.net Mvc 3,Nunit,使用nUnit。结果是从MVC3控制器返回的ViewResult-它可能在那里,也可能不在那里 这管用,但有味道!有更好的办法吗 string errorMessage = ""; try { errorMessage = result.TempData["Error"].ToString(); } catch {} Assert.IsNullOrEmpty(errorMessage); 更

使用nUnit。结果是从MVC3控制器返回的ViewResult-它可能在那里,也可能不在那里

这管用,但有味道!有更好的办法吗

        string errorMessage = "";
        try {
            errorMessage = result.TempData["Error"].ToString();
        }
        catch {}
        Assert.IsNullOrEmpty(errorMessage);
更新1 越来越近。。。但无法从测试中获取正确的错误消息,如下所示:

更新2: 重构为:

        string errorMessage = "";
        if (result != null)
            errorMessage = result.TempData["Error"].ToString();
        Assert.IsEmpty(errorMessage);
更新3: 回应@Peri

 public void new_trick_should_be_saved_without_error() {
        var controller = new TricksController();
        var formCollection = new FormCollection() {
                                                    { "Name", "asdf" },
                                                    { "Description", "test descr"},
                                                    { "Votes", "4" }
                                                  };
        var result = controller.Create(formCollection) as ViewResult;

        string errorMessage = "";
        if (result != null)
            errorMessage = result.TempData["Error"].ToString();
        Assert.IsEmpty(errorMessage);
    }

无需尝试/捕捉

您测试的是null,而不是空字符串

Assert.IsNull(result.TempData["Error"])


无需尝试/捕捉

您测试的是null,而不是空字符串

Assert.IsNull(result.TempData["Error"])


Cheel@Valamas-添加了一个屏幕截图,上面有3个不同的案例。结果为空。我已经更新了我的答案。但是,我建议使用一个静态函数来获取ErrorMessage(结果)。您可以在其中放置空检查,并始终让它至少返回一个空字符串或空字符串。再次感谢@Valamas-am在当前代码中的简单性,所以进行了检查并在上面输入了代码。感谢您对静态fn.cheel@Valamas的建议-添加了上面3个不同案例的屏幕截图。结果为空。我已经更新了我的答案。但是,我建议使用一个静态函数来获取ErrorMessage(结果)。您可以在其中放置空检查,并始终让它至少返回一个空字符串或空字符串。再次感谢@Valamas-am在当前代码中的简单性,所以进行了检查并在上面输入了代码。感谢您对静态fn的建议。如果必须测试结果,您的测试似乎有问题!=空。可能。。已经在上面的更新3中添加了。为什么创建返回ViewResult或其他内容?基于FormCollection中的这些值,它不应该总是返回ViewResult或其他内容吗?如果必须测试if result,那么您的测试似乎有问题!=空。可能。。已经在上面的更新3中添加了。为什么创建返回ViewResult或其他内容?基于FormCollection中的这些值,它不应该总是返回ViewResult或其他值吗?