Rumah > rangka kerja php > Laravel > teks badan

Ujian unit dengan Laravel: memastikan kestabilan dan kualiti kod

WBOY
Lepaskan: 2023-08-12 22:33:06
asal
1745 orang telah melayarinya

Ujian unit dengan Laravel: memastikan kestabilan dan kualiti kod

Ujian unit dengan Laravel: memastikan kestabilan dan kualiti kod

Pengenalan:
Dalam proses pembangunan perisian, ujian unit ialah kaedah ujian perisian yang sangat penting yang boleh digunakan untuk memastikan kestabilan dan kualiti kod. Laravel ialah rangka kerja PHP popular yang menyediakan alat ujian unit yang berkuasa, membolehkan pembangun menulis dan menjalankan ujian unit dengan mudah. Artikel ini akan memperkenalkan cara menggunakan Laravel untuk ujian unit untuk memastikan ketepatan kod dalam senario yang berbeza.

1. Mengapa menggunakan ujian unit
Ujian unit ialah kaedah ujian yang mengesahkan unit terkecil yang boleh diuji dalam sistem perisian. Unit minimum ini boleh menjadi fungsi, kelas atau blok kod yang lebih kecil. Menggunakan ujian unit boleh melaksanakan "pembangunan dipacu ujian" dengan berkesan, iaitu, menulis kes ujian sebelum pengekodan, dan memastikan kod yang sepadan dilaksanakan selepas kes ujian lulus. Ini memastikan kestabilan dan kualiti kod dan mengurangkan kos untuk menemui dan membetulkan pepijat kemudian.

2. Alat ujian unit Laravel
Laravel menyediakan pelbagai alat ujian unit, termasuk rangka kerja ujian PHPUnit, kelas kes ujian, kaedah penegasan, dsb. Antaranya, PHPUnit ialah rangka kerja ujian yang berkuasa yang boleh digunakan untuk menulis pelbagai jenis kes ujian.

3. Tulis kes ujian
Dalam Laravel, kelas kes ujian biasanya disimpan dalam direktori ujian, dan beberapa kelas kes ujian yang berbeza boleh dibuat untuk menguji fungsi yang berbeza. Berikut ialah contoh mudah:

namespace TestsUnit;

use TestsTestCase;
use AppModelsUser;

class UserTest extends TestCase
{
    /**
     * 测试用户是否可以创建成功
     */
    public function testCreateUser()
    {
        $user = User::create([
            'name' => 'John Doe',
            'email' => 'john.doe@example.com',
            'password' => 'password',
        ]);

        $this->assertInstanceOf(User::class, $user);
        $this->assertEquals('John Doe', $user->name);
        $this->assertEquals('john.doe@example.com', $user->email);
    }

    /**
     * 测试用户名是否必填
     */
    public function testRequiredName()
    {
        $this->expectException(Exception::class);
        
        $user = User::create([
            'email' => 'john.doe@example.com',
            'password' => 'password',
        ]);
    }

    // 其他测试方法...
}
Salin selepas log masuk

Dalam contoh di atas, kami telah mencipta kelas UserTest yang mewarisi daripada kelas TestCase. Dalam kelas ini kita boleh menulis pelbagai kaedah ujian untuk fungsi yang berbeza. Dalam kaedah ujian pertama, kami mencipta pengguna dan kemudian menggunakan beberapa kaedah penegasan untuk mengesahkan bahawa atribut pengguna adalah betul. Dalam kaedah ujian kedua, kami sengaja meninggalkan medan nama yang diperlukan dan kemudian menggunakan kaedah expectException untuk menangkap pengecualian yang dijangkakan.

4 Jalankan kes ujian
Selepas menulis kes ujian, kita boleh menggunakan arahan berikut untuk menjalankan ujian unit:

php artisan test
Salin selepas log masuk

Selepas menjalankan arahan, Laravel akan memanggil PHPUnit secara automatik untuk melaksanakan kes ujian dan memaparkan keputusan ujian . Keputusan ujian akan memaparkan maklumat seperti keputusan berjalan dan kadar lulus setiap kaedah ujian.

5. Gunakan objek Olok-olok untuk suntikan kebergantungan
Dalam sesetengah kes, kita perlu mensimulasikan objek bergantung kelas yang sedang diuji untuk mengawal persekitaran ujian dengan lebih baik. Dalam Laravel, anda boleh menggunakan Mockery untuk mencipta dan mengurus objek Mock. Berikut ialah contoh mudah:

use TestsTestCase;
use AppServicesPaymentService;
use AppRepositoriesOrderRepository;
use AppModelsOrder;

class OrderTest extends TestCase
{
    /**
     * 测试支付订单
     */
    public function testPayOrder()
    {
        // 创建Mock对象
        $paymentService = Mockery::mock(PaymentService::class);
        $orderRepository = Mockery::mock(OrderRepository::class);
        
        // 设置Mock对象的返回值
        $paymentService->shouldReceive('pay')->andReturn(true);
        $orderRepository->shouldReceive('findById')->andReturn(new Order());
        
        // 将Mock对象注入到被测类中
        $order = new Order($paymentService, $orderRepository);
        
        // 执行被测方法
        $result = $order->pay();
        
        // 断言结果
        $this->assertTrue($result);
    }
    
    // 其他测试方法...
}
Salin selepas log masuk

Dalam contoh di atas, kami menggunakan Mockery untuk mencipta dua objek Mock dan menetapkan nilai pulangan yang dijangkakan untuk mereka masing-masing. Kemudian, kami menyuntik dua objek Mock ini ke dalam kelas yang sedang diuji dan memanggil kaedah yang sedang diuji. Akhir sekali, kami menggunakan kaedah penegasan untuk mengesahkan bahawa keputusan yang dikembalikan adalah betul.

Kesimpulan:
Dengan menggunakan alat ujian unit yang disediakan oleh Laravel, kami boleh menulis dan menjalankan pelbagai jenis kes ujian dengan mudah untuk memastikan ketepatan dan kestabilan kod kami dalam persekitaran yang berbeza. Ujian unit ialah cara penting untuk meningkatkan kualiti kod dan kecekapan pembangunan, dan patut diberi perhatian dan penggunaan kami dalam pembangunan harian. Saya harap artikel ini boleh membawa anda sedikit inspirasi dan bantuan tentang menggunakan Laravel untuk ujian unit.

Atas ialah kandungan terperinci Ujian unit dengan Laravel: memastikan kestabilan dan kualiti kod. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan