ErrorException: Попытка получить свойство 'id' не-объекта - PullRequest
0 голосов
/ 05 октября 2018

Я написал модульный тест для обновления записи, и когда я пытаюсь запустить мой тест, он проходит иногда и в других случаях происходит сбой с ошибкой

ErrorException: Попытка получить свойство 'id'Я не знаю, почему это происходит.Проверил другой пост с похожим названием, но ничего не связано с моим делом.

Вот тест

public function testUpdateBookRecord()
{
    // Select an existing user randomly & authenticate the user.
    $user = User::all()->random();
    Passport::actingAs($user);

    // Get any book belonging to the user.
    $selectedBook = Book::where('user_id', $user->id)->inRandomOrder()->first();

    // Update the book.
    $response = $this->json('PUT', '/api/books/'.$selectedBook->id, [
        'title'     => $this->faker->sentence(),
        'author'    => $this->faker->name()
    ]);

    $response->assertStatus(200);
}

И этот контроллер отвечает за обновление

public function update(Request $request, Book $book)
{
    $validatedData = $request->validate([
        'title'     => 'required|unique:books',
        'author'    => 'required'
    ]);

    // Update book if the logged in user_id is the same as the book user_id
    if ($request->user()->id === $book->user_id) {
        $book->update($request->only(['title', 'author']));

        return new BookResource($book);
    } else {
        return response()->json(['error' => 'You do not have the permission for this operation'], 403);
    }
}

Что не так с моим кодом?

1 Ответ

0 голосов
/ 05 октября 2018

Вы можете написать

User::inRandomOrder()->first();

или добавить комментарий

$user['id'] instead of $user->id
...