[英]C++ How can I mock an asio::awaitable method
我想從 boost asio 庫中模擬以下行。
auto bytes = co_await socket.async_read(boost::asio::buffer(data), boost::asio::use_awaitable);
我想創建一個代表套接字的接口,然后通過使用 asio 實現該接口以進行生產,並通過實現我自己的模擬 class 來進行測試。
class MockSocket{
asio::awaitable<size_t> async_read(boost::asio::buffer&& buffer){
this.buffer = buffer;
co_await this.something;
co_return this.size;
}
void complete_read(string dataToPutInBuffer){
this.buffer.write(dataToPutInBuffer);
this.size = dataToPutInBuffer.length();
this.something.resume();
}
}
我不知道 this.something 應該是什么。 asio::awaitable 似乎沒有 resume() 方法。
您可以使用async_result
或async_initiate
來實現您自己的啟動 function ,它采用 Asio CompletionToken 。
另請注意,Beast 包含一個模擬 AsyncStream 的AsyncStream
- 這足以滿足例如asio::async_read*
系列操作。
在這里看到它: 測試::stream
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.