ショッピングカートクラスを作ってみる
これから,
- 前提条件:商品コード,
数量共に自然数とする
- 初期状態では,
カートに入れられた商品数は0 - 商品を追加する場合,
商品コードと数量 (正数) を指定する - 数量を変更する場合,
商品コードと変更する数量 (整数) を指定する - 商品コードを指定して,
カートに入っている数量を取得できる - すべての商品コードと数量をまとめて取得できる
- クリアすると,
カートは初期状態になる
1番目の仕様「初期状態では,カートに入れられた商品数は0」
それでは早速,
初期状態では,カートに入れられた商品数は0
を実装していきましょう。まずは,
<?php
require_once 'PHPUnit/Framework.php';
class CartTest extends PHPUnit_Framework_TestCase
{
}
それではphpunitコマンドを実行してみます。
$ phpunit CartTest PHPUnit 3.1.7 by Sebastian Bergmann. F Time: 0 seconds There was 1 failure: 1) Warning(PHPUnit_Framework_Warning) No tests found in class "CartTest". FAILURES! Tests: 1, Failures: 1. $
実行するテストがまだ存在しないため,
すべての商品コードと数量をまとめて取得できる
と併せてテストを書いていくことにします。また,
<?php
require_once 'PHPUnit/Framework.php';
class CartTest extends PHPUnit_Framework_TestCase
{
public function testInitCart() {
$cart = new Cart();
$this->assertTrue(is_array($cart->getItems()));
$this->assertEquals(0, count($cart->getItems()));
}
}
そして,
$ phpunit CartTest PHPUnit 3.1.7 by Sebastian Bergmann. PHP Fatal error: Class 'Cart' not found in /home/shimooka/public_html/gihyo.jp/01.phpunit/CartTest.php on line 7 Fatal error: Class 'Cart' not found in /home/shimooka/public_html/gihyo.jp/01.phpunit/CartTest.php on line 7 $
今度はCartクラスが存在しないためのFatal errorとなりました。必要最低限のCartクラスとメソッドの枠だけ作成し
<?php
class Cart
{
public function getItems() {
}
}
<?php
require_once 'PHPUnit/Framework.php';
require_once 'Cart.php';
class CartTest extends PHPUnit_Framework_TestCase
{
public function testInitCart() {
$cart = new Cart();
$this->assertTrue(is_array($cart->getItems()));
$this->assertEquals(0, count($cart->getItems()));
}
}
そしてphpunitコマンドの実行です。
$ phpunit CartTest PHPUnit 3.1.7 by Sebastian Bergmann. F Time: 0 seconds There was 1 failure: 1) testInitCart(CartTest) Failed asserting that <boolean:false> is true. /home/shimooka/public_html/gihyo.jp/01.phpunit/CartTest.php:9 FAILURES! Tests: 1, Failures: 1.
$this->assertTrueメソッドでfalseが返ってきているためのエラーのようです。まだCartクラスのgetItemsメソッドを実装していたいためなので当然ですね。では,
<?php
class Cart
{
public function getItems() {
return array();
}
}
$ phpunit CartTest PHPUnit 3.1.7 by Sebastian Bergmann. . Time: 0 seconds OK (1 test) $
「えっ?」