facebook / fbmock
此软件包已被废弃,不再维护。未建议替代软件包。
FBMock 是一个设计简单易用的 PHP 模拟框架。
dev-master
2018-10-29 19:32 UTC
Requires
- php: >=5.4.0
This package is not auto-updated.
Last update: 2020-01-24 14:49:10 UTC
README
FBMock 是一个设计简单易用的 PHP 模拟框架。
与其他模拟框架不同,FBMock 主要只是使用存根和间谍。FBMock 鼓励开发者编写简单的返回行为,仅在适当的情况下使用间谍。
要求
- HHVM 或 PHP 5.4+
注意:框架的测试使用 PHPUnit,但使用 FBMock 不需要 PHPUnit。
使用方法
包含 init.php 以设置自动加载器
require_once YOUR_FBMOCKS_DIR.'/init.php'
使用 Composer 安装(可选)
要通过 composer 安装此软件包,只需将其添加到 require
并开始使用。
{ "require": { "facebook/fbmock": "*@dev" } }
创建模拟
mock('Foo')
同样,您也可以以相同的方式模拟接口
mock('IFoo')
存根
默认情况下,所有方法都返回 null。配置返回值的辅助方法以 'mock' 前缀开头。
mock('Foo')->mockReturn('bar', 'return value here');
有时,您可能需要比 mockReturn 更多的控制
mock('Foo')->mockImplementation( 'bar', function ($bar_type) { return $bar_type == 1; } );
有关其他辅助方法(mockThrow、mockReturnThis 等)请参阅 Mock.php
间谍
$mock_foo = mock('Foo'); $mock->mockReturn('bar', 1); $code_under_test->doSomething($mock_foo); // Returns array of calls $mock_foo->mockGetCalls('bar');
如果您正在使用 PHPUnit,可以将 FBMock_AssertionHelpers 添加到您的 base PHPUnit_TestCase 以获取一些间谍辅助方法
$this->assertCalledOnce($mock_foo, 'bar'); $this->assertCalledOnce($mock_foo, 'bar', $expected_params_as_array); // param assertion is optional $this->assertCalls($mock_foo, 'bar', $expected_params_for_first_call, $expected_params_for_second_call, ...);
技巧
使用多集功能以提高可读性
mock('Foo')->mockReturn(array( 'bar' => 1, 'get' => 'data', 'run' => true, ))->mockReturnThis('set', 'addID', 'removeID');
利用流畅接口进行简洁的模拟设置
mock('Foo')
->mockReturn('bar', 1)
->mockThrow('other_method')
->mockImplementation('another_method', function () { /* ... */ })
->mockReturnThis('setData');
当方法未调用时使用严格的模拟
如果调用任何未模拟的方法,模拟将抛出异常。
$db_conn = strict_mock('DBConnection')->mockReturn('read', $data); // ...in code under test $db_conn->write($some_data); // Throws FBMock_MockFrameworkException
自定义
有关根据您的需求自定义 FBMock 的说明,请参阅 CustomConfig-sample.php。
HHVM 仅功能
- 模拟最终类和有最终方法类的类
- 模拟内部类
社区
我们有一个 邮件列表。如果您正在使用 FBMock,请给我们发送电子邮件打招呼!