簡體   English   中英

如何測試從std :: istream讀取的類?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM