Heim > Backend-Entwicklung > PHP-Tutorial > [PHP][Laravel Test]单元化测试:深入测试篇

[PHP][Laravel Test]单元化测试:深入测试篇

WBOY
Freigeben: 2016-06-23 13:01:42
Original
913 Leute haben es durchsucht

本文适用于对 PHP 和 laravel 框架有一定了解并已经看完laravel入门视频:Laravel 5 Fundamentals 的初学者。本文内容主要讲解如何使用单元化测试工具测试应用。

相关视频 laravel test 已经下载到网盘如果还没看请先下载观看:

  • 链接: http://pan.baidu.com/s/1sjXeLQH
  • 提取密码:jjb5

1.在 tests 目录下,新建测试文件 OrderTest.php 。

<?php use App\Product;use App\Order; class ProductTest extends PHPUnit_Framework_TestCase {     /** @test */    function an_order_consists_of_products()    {        $order = new Order;         $product = new Product('Fallout4',59);        $product2 = new Product('Pillowcase',7);         $order->add($product);        $order->add($product2);         $this->assertEquals(2,count($order->products()));    } } 
Nach dem Login kopieren

在 App 目录下创建 Order.php 文件

<?php namespace App; class Order{    protected $products = [];     public function add(Product $product)    {        $this->products[] = $product;    }     public function products()    {        return $this->products;    }} 
Nach dem Login kopieren

优化最后一行代码使用 assertCount() 方法。

<?php use App\Product;use App\Order; class ProductTest extends PHPUnit_Framework_TestCase {    /** @test */    function an_order_consists_of_products()    {        $order = new Order;         $product = new Product('Fallout4',59);        $product2 = new Product('Pillowcase',7);         $order->add($product);        $order->add($product2);         $this->assertCount(2,$order->products());    } } 
Nach dem Login kopieren

输入命令: phpunit tests/unit 测试

2.测试订单总额。

输入命令: phpunit --filter an_order_can_determine_the_total_cost_of_all_its_products

只测试一个方法

<?php use App\Product;use App\Order; class ProductTest extends PHPUnit_Framework_TestCase {    /** @test */    function an_order_consists_of_products()    {        $order = new Order;         $product = new Product('Fallout4',59);        $product2 = new Product('Pillowcase',7);         $order->add($product);        $order->add($product2);         $this->assertCount(2,$order->products());    }     /** @test */    function an_order_can_determine_the_total_cost_of_all_its_products()    {        $order = new Order;         $product = new Product('Fallout4',59);        $product2 = new Product('Pillowcase',7);         $order->add($product);        $order->add($product2);         $this->assertEquals(66,$order->total());    }} 
Nach dem Login kopieren

测试文件 Order.php

<?php namespace App; class Order{    protected $products = [];     public function add(Product $product)    {        $this->products[] = $product;    }     public function products()    {        return $this->products;    }     public function total()    {        total = 0;         foreach($this->productsas $product){            $total += $product->cost();        }         return $total;    }} 
Nach dem Login kopieren

通过测试

使用 createOrderWithProducts() 方法简化代码。

<?php use App\Product;use App\Order; class ProductTest extends PHPUnit_Framework_TestCase {    /** @test */    function an_order_consists_of_products()    {         $order = $this->createOrderWithProducts();         $this->assertCount(2,$order->products());    }     /** @test */    function an_order_can_determine_the_total_cost_of_all_its_products()    {        $order = $this->createOrderWithProducts();         $this->assertEquals(66,$order->total());    }     protected function createOrderWithProducts()    {         $order = new Order;         $product = new Product('Fallout4',59);        $product2 = new Product('Pillowcase',7);         $order->add($product);        $order->add($product2);         return $order;    }} 
Nach dem Login kopieren

总结

本篇稍微深入的测试了一下 Order 类,后续继续作详尽阐述。

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage