GMock - 来自第三方库的模拟类



我正在查看GMock,并试图确定它对于我想做的某些单元测试是否可行。

如果我理解正确,你 Mock 的任何类都必须有一个可以从中创建模拟的接口,并且你想要测试的任何类都必须能够通过注入接受模拟。

到目前为止,我是正确的吗?

如果我是对的,到目前为止,我看不出它将如何帮助我测试使用第三方类的类。

例如:

假设我编写了一个ChatClient类,在实现它时,我使用Qt库中的QWebSocketChatClient具有类型为QWebSocket的成员ChatClient::m_socket

现在,GMock 没有接口可以从中创建模拟 websocket,我的聊天客户端也不会通过生产代码中的依赖注入来获取接口。QWebSocket的工作方式是如此具体,以至于我永远无法使用不同的具体实现。

但是,我确实想测试我的ChatClient,调用在应该连接时连接,将正确的字节传递给其对QWebSocket::sendBinaryMessage的调用,正确响应传入的消息等,并且似乎模拟框架会很有用以这种方式测试我的ChatClient,所以我不必实际连接到网络。

我该怎么办,或者这在C++中是行不通的,就像在其他语言中一样,因为我们没有反思?

我是否只是为第三方类创建自己的接口,每次调用它,将其转发给第三方类,然后让我的ChatClient使用该接口,即使我永远不会使用另一个具体的实现,只是为了启用测试?

">

只是为了启用测试"对我来说已经足够了,但我同意如果有很多方法,就会有很多样板......

请参阅静态依赖注入:来自外部类的模拟静态方法(我无法更改!

最新更新