Tôi đang cố đặt thông số "out" trên mô hình với SetArgPointee
. Dưới đây là đoạn code tôi đang thử nghiệm:Tại sao tôi không thể sử dụng SetArgPointee() với googlemock?
DWORD bodysize = 1024;
char body[1024];
HRESULT hr = req->ReadEntityBody(body, bodysize, false, &bodysize, NULL);
req
là một IHttpRequest*, và tôi muốn thiết lập bodysize
, lập luận 3, trong mô hình. Dưới đây là các mã từ thử nghiệm đơn vị của tôi:
EXPECT_CALL(req, ReadEntityBody(NotNull(), Ge(1024), false, NotNull(), _))
.WillOnce(SetArgPointee<3>(4))
.WillOnce(Return(ERROR_HANDLE_EOF));
Điều này dẫn đến các lỗi lạ như sau:
error C2440: 'return' : cannot convert from 'void' to 'long' (gmock/gmock-actions.h:369)
Nếu tôi nhận xét ra .WillOnce(SetArgPointee<3>(4))
, mã biên dịch và thực hiện một cách chính xác. Dưới đây là định nghĩa có liên quan trong bản thân mô hình:
MOCK_METHOD5(ReadEntityBody, HRESULT(VOID *pvBuffer, DWORD cbBuffer, BOOL fAsync, DWORD *pcbBytesReceived, BOOL *pfCompletionPending));
Và, trong trường hợp nó giúp, full mock of IHttpRequest của tôi.
Tôi rõ ràng không hiểu hành động trước đây, heh. Cảm ơn bạn vì sự giúp đỡ! – ladenedge