Mocking framework for hacklang


Keywords
testing, mock, hack, hhvm, hacklang, tests
License
MIT

Documentation

Build Status

HackMock

Creating mock objects for hacklang - yes, seriously.

Note

Due to the use of eval, hackmock may stop working in future hhvm versions.

What works?

  • Strict mode
  • Creating mocks of interfaces and concrete classes
  • Defining basic method expectations (parameter validation, return value definition)

What does not work?

  • Everything else, especially rare and/or untested cases involving generics, etc.
use function Usox\HackMock\{mock, prospect};

class SomethingTest extends \Usox\HackMock\HackMock {

  public function testSomething() {
    $my_fine_class = mock(SomeInterface::class);

    prospect($my_fine_class, 'someMethodName')
      ->once()
      ->andReturn('some-fine-value');

    prospect($my_fine_class, 'someOtherMethodName')
      ->andThrow(new \Exception('foobar'));
  }
}