cari

Rumah  >  Soal Jawab  >  teks badan

isu ujian unit phpunit

<?php 
namespace app\tests;

use PHPUnit\Framework\TestCase;
use GuzzleHttp\Client;

class UserTest extends TestCase
{
    private $client;

    public function setUp()
    {
        $this->client = new \GuzzleHttp\Client( [
            'base_uri' => 'http://z.slim.com',
            'http_errors' => false, 
        ]);
    }


    public function testUser()
    {
        $response = $this->client->get('/user/vilay');
        $this->assertEquals(200, $response->getStatusCode());
        $body = $response->getBody();
        $data = json_decode($body, true);
        $this->assertArrayHasKey('code', $data);
        $this->assertArrayHasKey('msg', $data);
        $this->assertArrayHasKey('data', $data);
        $this->assertEquals(0, $data['code']);
    }
}

Selepas menulis kod ujian, laksanakannya


php vendor/bin/phpunit app/tests/UserTest.php

Ujian tidak dilaksanakan dan skrip phpunit dikeluarkan secara langsung


dir=$(d=${0%[/\]*}; cd "$d"; cd "../phpunit/phpunit" && pwd)

# See if we are running in Cygwin by checking for cygpath program
if command -v 'cygpath' >/dev/null 2>&1; then
    # Cygwin paths start with /cygdrive/ which will break windows PHP,
    # so we need to translate the dir path to windows format. However
    # we could be using cygwin PHP which does not require this, so we
    # test if the path to PHP starts with /cygdrive/ rather than /usr/bin
    if [[ $(which php) == /cygdrive/* ]]; then
        dir=$(cygpath -m "$dir");
    fi
fi

dir=$(echo $dir | sed 's/ /\ /g')
"${dir}/phpunit" "$@"

Selain itu, saya mengkonfigurasi ujian unit ke dalam pembolehubah persekitaran sistem dan melaksanakan ujian


phpunit app/tests/UserTest.php

Perlu memperkenalkan autoload.php di kepala kod


require_once 'vendor/autoload.php';

Bukankah boleh dimuatkan secara automatik

代言代言2715 hari yang lalu1078

membalas semua(2)saya akan balas

  • 大家讲道理

    大家讲道理2017-06-26 10:51:13

    Selesai, saya temui sendiri penyelesaiannya selepas digesa oleh jawapan yang diberikan oleh dua rakan terdahulu

    Banyak tutorial yang terdapat dalam talian dilaksanakan menggunakan arahan

    
    php vendor/bin/phpunit tests.php
    

    Ia mungkin disebabkan oleh sebab versi Versi terdahulu ialah fail skrip php, manakala versi saya ialah "phpunit/phpunit": "^6.2"vendor/bin/phpunitfail skrip shell (saya tidak tahu secara spesifik kerana saya tidak menggunakan 5.x).

    Cara yang betul untuk menggunakannya adalah dengan memberikan kebenaran boleh laksana fail skrip

    
    chmod a+x vendor/bin/phpunit
    chmod a+x vendor/phpunit/phpunit/phpunit
    

    Melaksanakan ujian

    
    sh vendor/bin/phpunit app/tests/UserTest.php
    

    Kaedah pemuatan automatik dilaksanakan Menggunakan pakej komponen phpunit yang dimuatkan oleh komposer, terdapat phpunit.xml dalam direktori akar projek, di mana anda boleh menetapkan laluan pemuatan automatik.

    <?xml version="1.0" encoding="UTF-8"?>
    <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/5.7/phpunit.xsd"
             bootstrap="vendor/autoload.php"
             backupGlobals="false"
             beStrictAboutOutputDuringTests="true"
             beStrictAboutTestsThatDoNotTestAnything="true"
             beStrictAboutTodoAnnotatedTests="true"
             verbose="true">
        <testsuite>
            <directory suffix="Test.php">tests</directory>
        </testsuite>
    
        <filter>
            <whitelist processUncoveredFilesFromWhitelist="true">
                <directory suffix=".php">src</directory>
            </whitelist>
        </filter>
    
        <logging>
            <log type="coverage-html" target="build/coverage/html" title="phpDox"
                 charset="UTF-8" highlight="true" lowUpperBound="60" highLowerBound="90"/>
        </logging>
    
    </phpunit>
    
    

    balas
    0
  • 世界只因有你

    世界只因有你2017-06-26 10:51:13

    Anda boleh menulis fail ujian unit di luar rangka kerja dan menggunakan phpunit xxx.php untuk mengujinya dengan cara ini anda akan tahu sama ada phpunit dipasang secara normal dan sama ada cara memperkenalkan autoload.php adalah salah.

    balas
    0
  • Batalbalas