setType(ACCOUNT_TYPE::UN40); $l2 = new Request\RequestWallet(); $l2->setAddressList($l1); $request = new Request(); $request->setWallet($l2); $requestData = $request->serializeToString(); Log::info('序列化请求数据完成', [ 'data_length' => strlen($requestData) ]); // 2. 发送真实的 HTTP 请求 Log::info('发送 HTTP 请求'); $response = $this->client->post('/api/protobuf', [ 'body' => $requestData, 'headers' => [ 'Content-Type' => 'application/x-protobuf', 'Accept' => 'application/x-protobuf', "Token" => $token ] ]); Log::info('收到 HTTP 响应', [ 'status_code' => $response->getStatusCode(), 'headers' => $response->getHeaders() ]); // 3. 验证 HTTP 响应状态码 $this->assertEquals(200, $response->getStatusCode()); // 4. 解析响应数据 $responseContent = $response->getBody()->getContents(); Log::info('获取响应内容', [ 'content_length' => strlen($responseContent) ]); $protoResponse = new Response(); $protoResponse->mergeFromString($responseContent); dump($protoResponse->serializeToJsonString()); Log::info('解析响应数据完成', [ 'response_code' => $protoResponse->getCode(), 'run_ms' => $protoResponse->getRunMs() ]); // 5. 验证基本响应字段 // $this->assertEquals(RESPONSE_CODE::HANDLE_NOT, $protoResponse->getCode()); $this->assertEquals(RESPONSE_CODE::OK, $protoResponse->getCode()); $this->assertStringStartsWith('token', $protoResponse->getPublic()->getLogin()->getToken()); Log::info('测试完成'); } }