1
我在我的单元测试中使用谷歌模拟库,我试图做一个自定义检查,可以失败。gmock:做自定义检查,可以失败
一个示例演示了什么,我试图做的:
struct Base
{
};
struct Derived : Base
{
int a;
};
struct MockClass
{
MOCK_METHOD1(Send, void (Base &));
};
现在我想检查假冒对象得以通过的发送方法派生类型的对象和值。 那么,该怎么做呢?
我的想法是使用Invoke并将呼叫转发给某个函数,该函数将dynamic_cast从Base转换为Derived,并检查值。如果类型不符合预期会抛出异常。就像这样:
void TestCall(Base &obj)
{
Derived *realObj = dynamic_cast< Derived * >(&obj);
if (NULL == realObj)
{
throw 123;
}
}
然后测试这样的:
MockClass mockObj;
EXPECT_CALL(mockObj, Send(_))
.WillOnce(Invoke(&TestCall));
难道这是否可行呢?或者,还有更好的方法?