我正在处理大型遗留项目。 我已经开始使用xUnit编写单元测试。 另外,我正在使用Moq框架。 我在这里阅读了很多文章,但没有找到明确的答案。我一直坚持了解如何在一个已测试的方法中对两个IDisposable对象进行模拟?我要测试的方法:
reader.GetResult()
我要60px
方法返回一些假数据。有没有想到应该如何为DBHelperAsync和DBHelperReaderAsync对象实现模拟?
答案 0 :(得分:2)
应重构被测类,以使其与DBHelperAsync
实现关注点分离。 类应依赖抽象而不是凝结。
应该为运行时代码注入并配置相应的抽象显式依赖项。现在,这将使被测类具有足够的灵活性,以使其易于单独进行测试。 (显式依赖原则)。
如果无法修改遗留类,则应将其包装成可以修改的抽象形式,然后注入到受测类中。
上面提供的代码需要一个IDBHelperAsyncFactory
抽象,该抽象将被注入到类中并用于创建一次性DBHelperAsync
,它也应该从一次性抽象interface IDBHelperAsync : IDisposable
派生。 / p>
这将允许在测试时轻松地对这些抽象进行模拟/存根。