0

我正在尝试在 laravel 中对一个函数(updateMeeting)进行单元测试,该函数在其中使用 curl 请求。我尝试了很多谷歌链接,但没有任何效果。你们能给我关于这个问题的建议吗?

以下是相关方法。$this->meeting 是一个会议模型

public function updateMeeting($meetingId){
$meeting = $this->meeting->find($meetingId);
 $endpoint = \Config::get('api_backend_endpoint');

$response = $this->curlPut($endpoint);

if ($response->http_status_code != 200) {

            if(Input::get('source') == 'ajax') {
                $apiResponse = app(ApiResponse::class);
                $message = 'ERROR Updating Meeting ' . $meeting->name;

                return $apiResponse->failed($message);
            }

            return Redirect::route('meetings.show', $meetingId)
                ->withInput()
                ->with('message', 'An error occurred hiding meeting with message: ' . $response->errors);
        }

        $meeting->save();

}

以下是 curlPut 方法

private function curlPut($url, $payload = array())
    {

        $data_string = json_encode($payload);

        $ch = curl_init();
        //send through our payload as post fields
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
        curl_setopt($ch, CURLOPT_USERPWD, $this->username . ":" . $this->password);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                'Content-Type: application/json',
                'Content-Length: ' . strlen($data_string))
        );

        $buffer = json_decode(curl_exec($ch));

        curl_close($ch);

        return $buffer;
    }
4

1 回答 1

0

使用像https://www.mocky.io/这样的网络服务。您无需请求真正的 API,而是将请求发送到他们的 API。您可以创建返回您可以定义的响应的模拟端点。

于 2018-12-03T11:33:22.617 回答