ホームページ > バックエンド開発 > PHPチュートリアル > [PHP][Laravel Test] 単体テスト: 詳細なテスト

[PHP][Laravel Test] 単体テスト: 詳細なテスト

WBOY
リリース: 2016-06-23 13:01:42
オリジナル
921 人が閲覧しました

この記事は、PHP と laravel フレームワークをある程度理解し、laravel の紹介ビデオ「Laravel 5 Fundamentals」を視聴した初心者に適しています。この記事では主に、単体テスト ツールを使用してアプリケーションをテストする方法について説明します。

関連ビデオ laravel テストがネットワーク ディスクにダウンロードされました。まだ見ていない場合は、まずダウンロードして見てください:

  • リンク: http://pan.baidu.com/s/1sjXeLQH
  • 抽出パスワード: jjb5

1. testing ディレクトリに、新しいテスト ファイル 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 testing/unit test

2. 合計注文金額をテストします。

コマンドを入力します: phpunit --filter an_order_can_determine_the_total_cost_of_all_its_products

1 つのメソッドのみをテストします

<?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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート