我有一个序列化下面显示的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;
}
}
我想创建一个单元测试来测试方法是否返回true但是无法想到为单元测试执行此操作的逻辑!任何人都可以提出一些建议,我在xUnit中如何做到这一点?感谢
答案 0 :(得分:1)
[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));
}
这基本上就是你要找的东西。您将需要阅读有关模拟的信息,以确保您正确地将测试隔离到简单单元;而不是测试系统组件。您不应该同时对您的方法,网络服务器和记录器进行单元测试,这将导致糟糕的体验和无法维护的测试。
如果您是一名书籍人士,我强烈推荐Osherove The Unit of Unit Testing ,这是一本非常快速的书,对我来说是非常宝贵的。