Webエンジニアのライフハック日記

ゲームをしたりe-Sportsの試合を観に行くのが大好きなエンジニアのブログ。仕事の話から、日常をちょっと便利にする話、節約の話などをメインに書いていきます。たまに実際に買った商品レビューなども。

PHPのSlim Framework 3.12で気になったプルリクが...

f:id:yoshiki_utakata:20181113093656p:plain

Slim Frameworkのプルリクエストで気になるのがありました。

github.com

    public function testGetBasePath()
    {
        $this->router->setBasePath('/new/base/path');
        $this->assertFalse(('/not/the/new/base/path' === $this->router->getBasePath()));
        $this->assertEquals('/new/base/path', $this->router->getBasePath());
    }

まあ、別にそんなに気にすることでもないっちゃ無いし、テストとして十分なのですが、気になるポイントが2つあります。

その1

$this->assertEquals('/new/base/path', $this->router->getBasePath());

ここですが、ぺちぱーだとどうしても assertSame を使いたくなるのではないでしょうか。

$this->assertSame('/new/base/path', $this->router->getBasePath());

assertSameassertEqualsには以下の違いがあります。

# このテストは落ちない
$this->assertEquals(1, '1');

# このテストは落ちる
$this->assertSame(1, '1');

そう、assertSameは型まで比較する厳密比較なのです。とはいえ、ここのassertEqualsをassertSameに変えたところで、受ける恩恵はそこまで大きくないのですが、やはりぺちぱーは型に恐怖心を持つべきかなとは思いますので、assertSameが使える場所ではassertSameを使いましょう。どっち使ったらいいかわからないけどassertEqialsってのはやめましょう。

その2

$this->assertFalse(('/not/the/new/base/path' === $this->router->getBasePath()));

これも気になってしまう!

$this->assertNotSame('/not/the/new/base/path', $this->router->getBasePath());

これでいいじゃないかー。意味はどっちも全く同じだし、この場合短いのでどちらでも可読性は変わんないですが、どっちかといえば読みやすいのは下何じゃないかなと思います。===で比較してassertFalseは、どういう場合が通るのか?って一瞬考えてしまいませんかね?

まとめ

別にいいんだけどちょっと気になるプルリクがあったので紹介しました。