【发布时间】:2020-06-12 08:10:16
【问题描述】:
我有一个类模板如下:
struct DailyQuote_t;
struct TickQuote_t;
template <typename Q>
class QtBuffer_t {
public:
virtual int size() const noexcept = 0;
};
在测试另一个名为 OrderBook_t 的类时,实例 QtBuffer_t
class OrderBook_t {
public:
void setDependent( const QtBuffer_t<DailyQuote_t>* pDB, const QtBuffer_t<TickQuote_t>* pTB ) noexcept {
m_pDBuf = pDB;
m_pTBuf = pTB;
};
bool update() {
m_pDBuf->size();
m_pTBuf->size();
};
private:
const QtBuffer_t<DailyQuote_t>* m_pDBuf;
const QtBuffer_t<TickQuote_t>* m_pTBuf;
};
我尝试将模板模拟如下,但失败了:
template<typename Q>
class QtBufferMock : public QtBuffer_t<Q> {
public:
MOCK_METHOD( int, size, (), ( const, noexcept, override ) );
};
最后我要分别模拟它们。
class DailyBufferMock : public QtBuffer_t<DailyQuote_t> {
public:
MOCK_METHOD( int, size, (), ( const, noexcept, override ) );
};
class TickBufferMock : public QtBuffer_t<TickQuote_t> {
public:
MOCK_METHOD( int, size, (), ( const, noexcept, override ) );
};
我的问题:有没有一种方法可以用单个模拟来模拟类模板?
谢谢!
【问题讨论】:
标签: c++ unit-testing templates mocking googlemock