如何使用gmock模拟AWS :: Transfer :: TransferManager类?

问题描述

我正在使用AWS C ++ SDK通过AWS::Transfer::TransferManager在AWS上下载/上传文件。我想对利用TransferManager的客户端类进行单元测试,并且需要模拟TransferManager。 AWS TransferManager类是具体类,而不是抽象类。我该如何模拟呢?

解决方法

请参见this answer,其中介绍了一种称为“高性能依赖注入”的技术。

基本上,它使您可以使用模板在编译时(而不是在运行时,如常规的独立依赖注入)定义非虚拟类的依赖项注入。缺点是您必须将其保存在头文件中。