我正在编写一些使用第三方库的代码。有问题的库提供了有关具体类而不是接口的API。这使得编写针对MY代码且不依赖于库实现细节的测试变得困难。
据我了解,标准做法是拥有一个提供与库相同功能的接口。然后,我可以将库(或其一部分)包装在实现新接口的类中。而且我可以拥有接口的其他(模拟)子类,这些子类可用于测试我的代码。
我需要模拟的库部分看起来像这样。
sys.argv[0]
我将需要同时模拟两种类型:class Connection {
public:
...
future<shared_ptr<Widget>> CreateWidget();
...
};
和Connection
。假设我有一个名为Widget
的接口。它可能具有带有以下签名的方法:IWrapperConnection
。但是这种方法行不通,因为该库返回了future<shared_ptr<IWrapperWidget>> CreateWidget()
,而我对此无能为力。
似乎我需要某种方法,例如使用函数future<shared_ptr<Widget>>
或类似方法将future<X>
转换为future<Y>
。
请告知在这种情况下如何进行。