Summer Sale! All accounts are 50% off this week.

david001's avatar

laravel testing send parameters

Hi I am using google autocomplete api and I want to test the api to make sure if i get place id in response.

I have got this error when running test. I am new to testing so i don't have much idea.

error TypeError: Argument 1 passed to App\Libraries\Autocompleteaddress\GoogleAutocompleteAddress::placeId() must be an instance of Illuminate\Http\Request, array given, called in my method

 public function placeId(Request $request)
    {
        $url = $this->url . "autocomplete/json?input= $request->inputData&types=address&key=$this->key";
        try {
            $client = new Client();
            $response = $client->request('get', $url);
            $responseJson =  $response->getBody()->getContents();
            $responseArray = json_decode($responseJson, true);
            $addressInformation = [];
            foreach ($responseArray['predictions'] as  $value) {
                $addressInformation[] = [
                    'id' => $value['place_id'],
                    'label' => $value['description'],
                    'value' => $value['description'],
                    'formFieldId'=> $request->formFieldId,
                ];
            }
            return $addressInformation;
        } catch (\Exception $e) {
            return response()->json(['error' => $e->getMessage()], 500);
        }
    }

Here $request->inputData is the addres

and my test is like this

 public function test_get_google_place_id()
    {


        $data ='60buckley street';    
        $response = (new AutocompleteAddress)->placeId($data);

        dd($response);
   
    }
    ```
0 likes
2 replies
SilenceBringer's avatar
Level 56

@david001 the error says

Argument 1 passed to App\Libraries\Autocompleteaddress\GoogleAutocompleteAddress::placeId() must be an instance of Illuminate\Http\Request, array given

and here is the row

public function placeId(Request $request)

wjen you expect Request. but you sen an array

        $data ='60buckley street';    
        $response = (new AutocompleteAddress)->placeId($data);

so, send Request instead of array

you can make new Request like

for GET request

$response = (new AutocompleteAddress)
		->placeId(new \Illuminate\Http\Request(['inputData' => $data]));

for POST request

$response = (new AutocompleteAddress)
		->placeId(new \Illuminate\Http\Request([], ['inputData' => $data]));

Please or to participate in this conversation.