[英]How to test class reading from std::istream?
如何模擬std::istream
? 我的意思是完全>>
。 我的測試對象從此流中讀取兩個數字( std::istream&
是此類的成員)。 我該如何測試? 如何在測試中讀取此值?
我想測試此值,或者只讀取測試值中定義的值,以進一步進行測試。
我用gmock。
使用依賴注入將類std::istringstream
的對象std::istringstream
給您的對象。 為您的類創建一個構造函數,該構造函數采用附加的std::istream &
參數並將其分配給該類型的成員。 例如:
MyClass
{
public:
MyClass(std::istream &stream, /* other constructor args */) :
stream_(stream)
{
...
}
...
void my_method()
{
int i, j;
stream_ >>i;
stream_ >>j;
...
}
private:
std::istream stream_;
};
然后,在您的測試中,只需創建istringstream
對象並將其傳遞給構造函數:
std::istringstream dummyStream("10 20");
MyClass obj(dummyStream, /* other constructor args */);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.