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

WBOY
풀어 주다: 2016-06-23 13:01:42
원래의
898명이 탐색했습니다.

本文适用于对 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()));    } } 
로그인 후 복사

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

<?php namespace App; class Order{    protected $products = [];     public function add(Product $product)    {        $this->products[] = $product;    }     public function products()    {        return $this->products;    }} 
로그인 후 복사

优化最后一行代码使用 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());    } } 
로그인 후 복사

输入命令: 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());    }} 
로그인 후 복사

测试文件 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;    }} 
로그인 후 복사

通过测试

使用 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;    }} 
로그인 후 복사

总结

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿