Объект класса не может быть преобразован в int - PullRequest
0 голосов
/ 30 ноября 2018

Я хочу написать тест phpunit для метода сохранения в моем хранилище.Мой код репо:

public function saveCustomer(Custom $custom)
{
    try
    {
        $custom->save();

        return array(
            'status' => true,
            'customerId' => $custom->getId()
        );
    }
    catch(\Exception $e)
    {
        return array(
            'status' => false,
            'customerId' => 0
        );
    }
 }

Я написал этот тест:

public function testSaveNewUye()
{
    $request = array(
        'email' => 'www@www.com',
        'phone' => '555 555 555',
        'password' => '34636'
    );
    $repo = new CustomerRepository();
    $result_actual = $this->$repo->saveCustomer($request);
    $result_expected = array(
        'status' => true,
        'customerId' => \DB::table('custom')->select('id')->orderBy('id', 'DESC')->first() + 1
    );
    self::assertEquals($result_expected, $result_actual);
}

Я получил ошибку, приведенную ниже:

ErrorException: объект класса App\ CustomerRepository не может быть преобразован в int

Можете ли вы помочь мне?

1 Ответ

0 голосов
/ 30 ноября 2018

Проблема здесь:

$repo = new CustomerRepository();
$result_actual = $this->$repo->saveCustomer($request);

Вы присваиваете и используете переменные не одинаково.

Попробуйте вместо этого:

$this->repo = new CustomerRepository();
//     ^------- assign to `$this`
$result_actual = $this->repo->saveCustomer($request);
//                      ^------- remove `$`

При выполнении $this->$repo-> PHP пытается преобразовать (объект) $repo в строку $this->(object)->, которая не работает.

Тогда у вас есть вторая ошибка здесь:

\DB::table('custom')->select('id')->orderBy('id', 'DESC')->first() + 1

Из базы данных вы получаете объект (instanceof stdClass), который вы не можете просто + 1.

Все это, вероятно, что-то вроде

\DB::table('custom')->select('id')->orderBy('id', 'DESC')->first()->id + 1

(из возвращенного объектаВы хотите собственность id.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...