1
votes

Les tests PHPUnit ne sont pas exécutés en utilisant laravel 6.0 avec la base de données SQLite

c'est ma configuration / base de données si je peux obtenir une réponse rapide

namespace Tests\Feature;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Tests\TestCase;

class ThreadTest extends TestCase
 {
   use DatabaseMigrations ;

  public function a_user_can_browse_threads()
 {
     $thread=factory('App\Thread')->create();
     $response = $this->get('/threads');

     $response->assertSee($thread->title);

     };
  }

... c'est le phpunit.ml .....

 <testsuite name="Feature">
        <directory suffix="Test.php">./tests/Feature</directory>
    </testsuite>
</testsuites>
<filter>
    <whitelist processUncoveredFilesFromWhitelist="true">
        <directory suffix=".php">./app</directory>
    </whitelist>
</filter>
<php>
    <server name="APP_ENV" value="testing"/>
    <server name="DB_CONNECTION" value="sqlite"/>
     <server name="DB_DATABASE" value=":memory:"/>
    <server name="BCRYPT_ROUNDS" value="4"/>
    <server name="CACHE_DRIVER" value="array"/>
    <server name="MAIL_DRIVER" value="array"/>
    <server name="QUEUE_CONNECTION" value="sync"/>
    <server name="SESSION_DRIVER" value="array"/>
</php>

voici le test.php a créé database.sqlite pls déjà ce qui me manque ici suis confus

'connections' => [

    'sqlite' => [
        'driver' => 'sqlite',
        'url' => env('DATABASE_URL'),
        'database' => env('DB_DATABASE', database_path('database.sqlite')),
        'prefix' => '',
        'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
    ]


2 commentaires

il ne sait pas que la méthode est une méthode de test très probablement


pls pouvez-vous être plus élaboré


3 Réponses :


2
votes

Avez-vous parcouru la documentation à ce sujet ?

Les tests sont des méthodes publiques nommées test *.

Essayez d'utiliser ce qui suit:

// This won't run by itself
public function fooBar()
{
    $foo = factory(\App\Foo::class)->create();

    $this->assertDatabaseHas('foos', [
        'id' => $foo->id
    ]);

    return $foo;
}


// This will 
public function testFoo()
{
    $bar = $this->fooBar();

    // Use the information in your test
}

Vous pouvez toujours écrire une fonction pas nommée test * code > et en consommer un autre.

public function testUserCanBrowseThreads() // <-- note the camelCase
{
    $thread = factory(\App\Thread::class)->create();

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

    $response->assertStatus(200); // <-- did you view the thread?

    $response->assertSee($value); //<-- whatever you want to look for 
}


0 commentaires

1
votes

Vous devez commencer le nom de votre méthode de test par test ou ajouter une annotation @test dans un docblock pour la méthode:

public function test_a_user_can_browse_threads()
{
    // Starting the tests name with 'test'
}

public function testUserCanBrowseThreads()
{
    // Starting the tests name with 'test' in another format
}

/**
 * @test
 */
public function a_user_can_browse_threads()
{
    // Using the @test annotation
}

Documentation PHPUnit - Rédaction de tests


4 commentaires

Je me trompe peut-être ici, mais les noms des tests ne sont-ils pas censés être camelCase? Peut-être juste une chose préférentielle?


Apprendre quelque chose de nouveau chaque jour! +1 pour le pourboire.


semble probablement plus joli dans camelCase :)


"ça ne marche pas" ... merci mais oui "ça marche", réessayer



0
votes

l'ont résolu

./vendor/bin/phpunit a fait l'affaire. L'appel de phpunit direct ne fonctionne pas pour la plupart des dernières versions de laravel


0 commentaires