type holyshared = Engineer<mixed>

PHP、Hack、Ruby、OCaml、Rust、Javascript周りの技術ブログ

HackのコードジェネレーターをHackTestに対応させた

Hack用のテストフレームワークが出たので、HackUnitから置き換えました。
github.com

そのついでに、CodegenにHackTestのテストコードを生成できるジェネレーターを追加しました。 github.com

HackUnitからの移行

名前空間をHackUnitからHackTestに置き換えるだけで移行できます。

移行前

use HHPack\Codegen\HackUnit\{TestClassGenerator};

移行後

use HHPack\Codegen\HackTest\{TestClassGenerator};

生成されるテストコード

下記のようなテストコードを生成します。
テストコード自体は、HackTestとFBExpectを使用する前提のコードなので、composerで別途パッケージをイントールする必要があります。

<?hh // strict
/**
 * This file is generated. Do not modify it manually!
 *
 * @generated SignedSource<<d89af2ac5307bacbedfa27fd6389c1ff>>
 */
namespace HHPack\Codegen\Example\Test;
use type Facebook\HackTest\HackTest;
use function Facebook\FBExpect\expect;

final class Bar extends HackTest {

  public function testExample(): void {
    expect(true)->toBeTrue();
  }
}

パッケージのインストールはHackTestのREADME.mdに書いてある通りにコマンドを実行するだけで、インストールできます。

hhvm /path/to/composer.phar require --dev hhvm/hacktest facebook/fbexpect

HackUnit、PHPUnit使わなくて済むのと、オフィシャルのテストフレームワーク(ブログで発表された)ぽいので、これ使った方がいいと思います。