원시 이중 포인터를 가진 메소드를 모의합니다. 예를 들어 helper 클래스는 int run (int ** a) 메소드를가집니다. SetArgPointee를 사용하여 기대치를 설정하려하지만 작동하지 않습니다. 컴파일러 에러가 발생하면 int ** const를 int *로 변환 할 수 없습니다.인수로 double 포인터를 가진 함수를 모의합니다.
class Helper {
public:
MOCK_METHOD1(run, int(int ** a));
};
int** test = new int*[2];
test[0] = new int[1];
test[0][0] = 5;
test[1] = new int[1];
test[1][0] = 55;
int** test2 = new int*[2];
test2[0] = new int[1];
test2[0][0] = 10;
test2[1] = new int[1];
test2[1][0] = 110;
Helper helper;
EXPECT_CALL(helper, run(_))
.Times(1)
.WillOnce(DoAll(SetArgPointee<0>(test2), Return(99)));
int rc = helper.run(test);
테스트 이중 포인터를 test2로 바꿀 수 없습니다. 그것이 어떻게 행해지는지 알고 싶다.
'도우미'란 무엇입니까? [MCVE] (https://stackoverflow.com/help/mcve)를보고 싶을 수도 있습니다. – Labonneguigue
클래스 도우미 { public : MOCK_METHOD1 (run, int (int ** a)); }; – user3699160
'벡터'을 사용할 수 없습니까? –
Labonneguigue