phpunit: не удается эффективно определить количество при тестировании функций laravel

#laravel #laravel-5 #phpunit

#laravel #laravel-5 #phpunit

Вопрос:

Когда я пытаюсь assertCount () Я получаю эту ошибку:

 PHPUnitFrameworkException: Argument #2 (No Value) of PHPUnitFrameworkAssert::assertCount() must be a countable or traversable
  

это означает, что я не передаю что-то, что является счетным.

Вот мой контроллер, я просто возвращаю коллекцию.

  public function index()
    {
        // Get articles
        $articles = Article::all();

        return $articles->toArray();
}
  

Здесь я могу сделать, count($articles) и это даст мне количество, но phpunit преобразует этот набор данных в другой объект. Следовательно, это выдает мне ошибку.

то есть

 /** @test */
    public function a_user_can_view_articles(){

        factory('AppArticle')->create();

        $response = $this->get('api/articles');

        $this->assertCount(1, $response);

    }
  

Но я, если assertCount это понравится:

 $this->assertCount(1, $response->baseResponse->data);
  

it works .
Я не хочу делать это постоянно. Могу ли я в любом случае сделать это лучшим образом

Ответ №1:

он преобразует его в json, используйте

 $this->assertCount(1, $response->json());
  

Комментарии:

1. О, мой господь. Я уточнил jsonResponse{baseReponse{}} .. Спасибо, приятель. Вы избавили меня от многих проблем.