4

dequeue()在 GMock 测试方法中,我需要将 out 参数设置为变量的地址,以便 的 out 参数data指向变量ch

MOCK_METHOD1(dequeue, void(void* data));

char ch = 'm';
void* a = (void*)&ch;

EXPECT_CALL(FQO, dequeue(_))
    .WillOnce(/*here I need to set argument to a*/);

我试图找出副作用,但不断出错。

4

1 回答 1

9

如果你想让函数的输出参数指向 a void*,那么它的类型需要是void**

MOCK_METHOD1(dequeue, void(void** data));

否则,您只能通过输出参数返回,而不能返回指向值的指针。

如果您对dequeue()方法的签名和对 的调用进行了适当的更改MOCK_METHOD1(),那么这应该可以满足您的要求:

EXPECT_CALL(FQO, dequeue(_))
    .WillOnce(SetArgPointee<0>(a));
于 2014-06-09T00:15:21.127 回答