如何在C#中对嵌套的“ using”语句进行单元测试?

时间:2018-09-25 15:57:58

标签: c# unit-testing moq xunit

我正在处理大型遗留项目。 我已经开始使用xUnit编写单元测试。 另外,我正在使用Moq框架。 我在这里阅读了很多文章,但没有找到明确的答案。我一直坚持了解如何在一个已测试的方法中对两个IDisposable对象进行模拟?我要测试的方法:

reader.GetResult()

我要60px方法返回一些假数据。有没有想到应该如何为DBHelperAsync和DBHelperReaderAsync对象实现模拟?

1 个答案:

答案 0 :(得分:2)

应重构被测类,以使其与DBHelperAsync实现关注点分离。 类应依赖抽象而不是凝结

应该为运行时代码注入并配置相应的抽象显式依赖项。现在,这将使被测类具有足够的灵活性,以使其易于单独进行测试。 (显式依赖原则)。

如果无法修改遗留类,则应将其包装成可以修改的抽象形式,然后注入到受测类中。

上面提供的代码需要一个IDBHelperAsyncFactory抽象,该抽象将被注入到类中并用于创建一次性DBHelperAsync,它也应该从一次性抽象interface IDBHelperAsync : IDisposable派生。 / p>

这将允许在测试时轻松地对这些抽象进行模拟/存根。