我正在使用谷歌模拟框架对我的代码执行一些单元测试。我有一个名为SerialPortManager的类,其构造函数为:
SerialPortManager(SerialPortFactoryInterface* serialPortFactory,SerialParserInterface* serialParsers[PORT_COUNT]);
为了执行测试,我有以下测试夹具
class SerialPortManagerTest: public testing::Test {
protected:
SerialPortManager* manager;
MockSerialPortFactory *portFactory;
SerialParserInterface *parsers[PORT_COUNT];
virtual void SetUp() {
portFactory = new MockSerialPortFactory();
for (int i = 0; i < PORT_COUNT; i++) {
parsers[i] = new MockSerialParser();
}
manager = 0;
}
现在,在我的一个测试中,我需要对其中一个模拟的SerialParsers设置期望。我试着这样做
EXPECT_CALL(*parsers[0], GetPendingCommands()).Times(1);
但是我得到了
Method 'gmock_GetPendingCommands' could not be resolved
¿有没有办法将SerialParserInterface指针强制转换为模拟类型?
答案 0 :(得分:0)
通过强制转换构造函数的参数来解决。我将解析器数组声明为MockSerialParser *解析器[PORT_COUNT],我将数组对象实例化为MockSerialParser *,然后将数组作为manager = new SerialPortManager(portFactory,(SerialParserInterface **)解析器)传递给构造函数;