ondrejmirtes/mocktainer

更轻松地创建具有模拟依赖关系的类对象!

0.8 2019-02-03 21:55 UTC

This package is auto-updated.

Last update: 2024-08-29 03:56:18 UTC


README

Build Status Coverage Status Scrutinizer Code Quality Latest Stable Version

厌倦了将你不需要的模拟依赖传递给测试下的类吗?

这段代码熟悉吗?

$foo1 = $this->getMockBuilder(Foo1::class)
	->disableOriginalConstructor()
	->getMock();
$foo2 = $this->getMockBuilder(Foo2::class)
	->disableOriginalConstructor()
	->getMock();
$foo3 = $this->getMockBuilder(Foo3::class)
	->disableOriginalConstructor()
	->getMock();
$foo4 = $this->getMockBuilder(Foo4::class)
	->disableOriginalConstructor()
	->getMock();
$interestingDependency = $this->getMock(Foo5::class);
$interestingDependency->expects($this->once())
	->method('getAwesome')
	->getMock();

// public function __construct(Foo1 $foo1, Foo2 $foo2, Foo3 $foo3, Foo4 $foo4, Foo5 $foo5)
$bar = new Bar($foo1, $foo2, $foo3, $foo4, $interestingDependency);

使用 Mocktainer,你可以将上面的代码简化为这样

$interestingDependency = $this->getMock(Foo5::class);
$interestingDependency->expects($this->once())
	->method('getAwesome')
	->getMock();

$bar = $this->getMocktainer()->create(Bar::class, ['foo5' => $interestingDependency]);

其他可模拟的构造函数参数将通过 MockBuilderdisableOriginalConstructor() 进行模拟。