Ich bekomme den obigen Fehler beim Testen meiner Anwendung mit phpunit Befehl.Laravel 5.2 - Ungültiges Argument für foreach() - mit phpunit
public function testProductCreationFailsWhenNameNotProvided()
{
$product = factory(\App\Product::class)->make(['name' => '']);
$this->post(route('api.products.store'), $product->jsonSerialize())
->seeJson(['name' => ['The name field is required.']]) /*line 86*/
->assertResponseStatus(422);
}
Der vollständige Bericht Fehler ist hier:
There was 1 error:
1) ExampleTest::testProductCreationFailsWhenNameNotProvided
ErrorException: Invalid argument supplied for foreach()
C:\xampp\htdocs\product- service\vendor\laravel\framework\src\Illuminate\Support\Arr.php:494
C:\xampp\htdocs\product-service\vendor\laravel\framework\src\Illuminate\Foundation\Testing\Concerns\MakesHttpRequests.php:231
C:\xampp\htdocs\product-service\vendor\laravel\framework\src\Illuminate\Foundation\Testing\Concerns\MakesHttpRequests.php:257
C:\xampp\htdocs\product-service\tests\ExampleTest.php:86
C:\xampp\php\pear\PHPUnit\TextUI\Command.php:176
C:\xampp\php\pear\PHPUnit\TextUI\Command.php:129
FAILURES!
Tests: 7, Assertions: 43, Errors: 1.
Ich gebe zu, dass dieser Code nicht ursprünglich Mine ist - es von einem Laravel Tutorial kopiert wird. Es hat dort gut funktioniert. Leider hat mir die Antwort auf diese Frage auch nicht geholfen. Laravel 5.1 + PHPunit - API test returns always invalid argument error foreach
Ich habe versucht, es zu ändern, um einen JSON-Array als Parameter
public function testProductCreationFailsWhenNameNotProvided()
{
$product = factory(\App\Product::class)->make(['name' => '']);
$this->post(route('api.products.store'), $product->jsonSerialize())
->seeJson(json_encode(array('name' => ['The name field is required.'])))
->assertResponseStatus(422);
}
zu passieren, aber dann habe ich diesen Fehler:
1) ExampleTest::testProductCreationFailsWhenNameNotProvided
TypeError: Argument 1 passed to Illuminate\Foundation\Testing\TestCase::seeJson() must be of the type array, string given, called in C:\xampp\htdocs\product-service\tests\ExampleTest.php on line 86
Haben Sie etwas in Ihrem Code basiert auf der SO Frage, die Sie verlinken auf, ändern, weil Sie den gleichen Fehler dort zu machen sind, dass das Plakat dieser Frage machte - ein Objekt eher als ein Array in 'seeJson vorbei() '. – Tex
Mögliches Duplikat von [Laravel 5.1 + PHPunit - API-Test gibt immer ungültigen Argumentfehler foreach] zurück (http://stackoverflow.com/questions/31921451/laravel-5-1-phpunit-api-test-returns-always-invalid- argument-error-foreach) – Tex
ja, ich habe tatsächlich verschiedene Kombinationen wie -seeJson ausprobiert (json_encode (array ('name' => ['Das Feld name ist erforderlich.']))) und vieles mehr – Andrei