蛋糕3:模型的模拟行为

时间:2015-03-03 22:57:37

标签: cakephp phpunit cakephp-3.0

在Cake 3中,我正在测试一种行为。现在我想测试通过模型保存时是否正确使用了该行为。为此,我需要模拟一些行为方法。

我已经搜索了很多方法来模拟它们并将它们添加到模型中。在Cake 2.x中,我们可以通过ClassRegistry注册自定义行为。我已经在Cake 3中搜索过如何做到这一点但却找不到它。

任何人都知道怎么做?

由于

1 个答案:

答案 0 :(得分:1)

您可以使用ObjectRegistry::set()手动将mocks手动添加到表行为注册表中,这允许添加任意对象。

$table = TableRegistry::get('FooBars');
$behaviorOptions = [];

$behaviorMock = $this->getMock(
    '\App\Model\Behavior\BazBehavior',
    ['some', 'mocked', 'methods'],
    [$table, $behaviorOptions]
);

$table->behaviors()->set('Baz', $behaviorMock);

现在,您的模拟行为已在Baz上注册到表中。