我应该使用什么断言代替“ Assert.DoesNotThrow ....”?

时间:2019-06-28 20:30:43

标签: c# xunit.net

我正在关注一些有关单元测试的教程。问题是xUnit.net的较早版本提供了一个“ Assert.DoesNotThrow”,现在已将其删除。我应该用什么代替呢?
(在下面的教程中,将使用此旧断言)

   [Fact]
    public void returns_json_response()
    {
        string results = execute("Batman");

        Assert.Throws.Nothing((new JavaScriptSerializer().Deserialize<dynamic>(results)));
    }

2 个答案:

答案 0 :(得分:0)

您可以使用Record.Exception方法检查异常,如下所示。

var exception = Record.Exception(() => new JavaScriptSerializer().Deserialize<dynamic>(results));
Assert.Null(exception);

答案 1 :(得分:0)

您应该测试'result`的值,否则测试只是针对JavascriptDeserializer。

如果您要在动态对象上包括序列化,那很好,但是您应该这样做,例如;

var dynamicFoo = new JavaScriptSerializer( //etc

Assert.Equal("bar", dynamicFoo.Bar);

note 这不是要测试序列化的字符串,而是测试results字符串。您还可以测试实际的字符串值。