xUnit 检查方法是否返回 true

Pad*_*990 1 c# serialization json xunit nancy

我有一个序列化 Json 对象的方法,如下所示:

public bool SerializeObject<T>(string fileName, IEnumerable<T> list)
    {
        try
        {
            var listContent = JsonConvert.SerializeObject(list, Formatting.Indented);
            var relativeFileName = _httpContext.Server.MapPath(fileName);

            _file.WriteAllText(relativeFileName, listContent);

            return true;
        }
        catch (Exception ex)
        {
            _logger.LogException(ex);
            return false;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我想创建一个单元测试来测试该方法是否返回 true,但无法想到为单元测试执行此操作的逻辑!任何人都可以对我如何在 xUnit 中执行此操作提出一些建议吗?谢谢

Tim*_*eed 5

[Fact]
public void SerializeObject_CorrectData_ReturnsTrue()
{
   //arrange
   string fileName = "blah.txt";
   var collect = new List<MyObject>{//add stuff};
   //act
   //nothing here
   //assert
   Assert.True(SerializeObject<MyObject>(fileName, collect));
}
Run Code Online (Sandbox Code Playgroud)

这基本上就是您要寻找的。您将需要阅读有关模拟的内容,以确保您正确地将测试隔离为简单的单元;而不是测试系统组件。你不应该同时对你的方法、网络服务器和记录器进行单元测试,这会导致糟糕的体验和无法维护的测试。

如果您是一个书迷,我强烈推荐 Osherove 的《单元测试的艺术》,这是一本非常快速的书,并且事实证明对我来说非常有价值。