断言可能不存在的东西 - nullreferenceexception

时间:2011-10-13 21:26:14

标签: asp.net-mvc-3 nunit

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

这有效,但闻起来!还有更好的方法吗?

        string errorMessage = "";
        try {
            errorMessage = result.TempData["Error"].ToString();
        }
        catch {}
        Assert.IsNullOrEmpty(errorMessage);

UPDATE1 越来越近了......但无法从测试中得到正确的错误信息,如下所示: enter image description here

UPDATE2: 重构为:

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

UPDATE3: 回应@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);
    }

1 个答案:

答案 0 :(得分:1)

无需尝试/捕获。

您正在测试null,而不是空字符串。

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

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