php
TDD
Qiitaの下書きで眠っていた記事を一度こちらに書き出すことに。
<?php
use PHPUnit\Framework\TestCase;
use tarohida\Sample\Sample;
class SampleTest extends TestCase
{
/**
* @dataProvider inputProvider
*/
public function testReturnHatsuneMiku(int $input, ?string $expected): void
{
$this->assertSame($expected, Sample::getHatsuneMiku($input));
}
public function inputProvider()
{
return [
[39, 'ハツネミク'],
[0, NULL],
[-1, NULL],
[1, NULL],
[40, NULL],
[38, NULL]
];
}
}
利用するSample
クラスが存在しないので、エラーが出力されます。テストは書けました。
この状態がREDです。
$ ./vendor/bin/phpunit ./tests/Sample/SampleTest.php
PHPUnit 9.1.5 by Sebastian Bergmann and contributors.
EEEEEE 6 / 6 (100%)
Time: 00:00.041, Memory: 4.00 MB
<?php
namespace tarohida\Sample;
use PHPUnit\Framework\TestCase;
class Sample{
public static function getHatsunemiku(int $input): ?string
{
if ($input === 39) {
return 'ハツネミク';
}
return NULL;
}
}
テストを実行するとエラーなく実行されました。if文の条件式の中身をif ($input !== 39)
と素でひっくり返して、一度テストコードに怒られました。テストコードを書いててよかったですね。この状態がGREENです。
$ ./vendor/bin/phpunit ./tests/Sample/SampleTest.php
PHPUnit 9.1.5 by Sebastian Bergmann and contributors.
...... 6 / 6 (100%)
Time: 00:00.038, Memory: 4.00 MB
<?php
namespace tarohida\Sample;
- use PHPUnit\Framework\TestCase;
class Sample{
- public static function getHatsunemiku(int $input): ?string
+ public static function getHatsuneMiku(int $input): ?string
{
if ($input === 39) {
return 'ハツネミク';
}
return NULL;
}
}
テストにパスする範囲で、内部の処理をリファクタリングします。
よく見たら関数名に大文字小文字が混ざっていた[1]ので、これを修正しました。
また、不要な名前空間を利用していたため、この行を削除しました。
おそらく単純なコードのため今回リファクタリング等は必要なかったのですが、もっと複雑なコードになるとリファクタリングが必要になるものと思います。
スケジューリングと見積もりについて悩んでたどり着いた書籍 (Clean Coder) にTDDについての記述があり、一度コーディングのスタイルとして取り込んでみようとしています。
ドキュメントではここに書いてありました。
注意: 関数名は ASCII 文字 A から Z で構成されている場合、 大文字小文字を区別しませんが、 通常は関数宣言時と同じ名前で関数をコールする方が好ましいです。
https://www.php.net/manual/ja/functions.user-defined.php
今後年齢を重ねていくにおいて,以下のようなことに気をつけて振る舞うようにしたほうがいいかなと思っている. 間違ったことをあえて正さない 相手が間違ったことを言ったとしても,それを場合によっては正さない. その場の雰囲気を乱したり,その人を不快にさせたりしないために. 思いついたギャグを、あえて言わずにかみ殺す 何か話の流れで面白いギャグとかを思いついても,場合によってはそれを口の中で噛み殺して言わない.
Nov 9, 2021apt list --installed 2> /dev/null | awk -F ',| ' '{print $1}' | grep -v '一覧表示' > ./installed_package.txt # cat installed_package.txt | head accountsservice/bionic-updates acl/bionic acpi-support/bionic acpid/bionic adduser/bionic adium-theme-ubuntu/bionic adwaita-icon-theme/bionic
Jan 24, 2021まとめ この本はどんな本? 職人気質・プロのミームを伝染させてくれる本」 内容ピックアップ プロのやりとり 「いつ終わる?」「〇〇日に終わります」 このやり取りで合意が取れれば完了。
Jan 16, 2021ベッドのマットレス レガリア - インシグニアという大塚家具レガリアシリーズのマットレスを購入しました。 高かったですが、2020年最高の買い物は間違いなくこれです。 睡眠の質が大きく高まりました。また、腰痛の症状緩和になりました。 ベッドのフレーム マットレスの新調に合わせてフレームも購入しました。
Jan 10, 2021or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up