是否有方法在测试类构造函数/类setUp函数中创建mock,以便所有测试方法都可以使用该mock?
我尝试过在构造函数中创建如下:
public class testMocks extends PHPUnit_Framework_TestCase {
protected $mock;
public function __construct()
{
$this->mock = Mockery::mock('myMockedClass');
}
...
但这行不通。如果第一个测试通过,那么在模拟上断言的所有测试都通过,即使它们应该失败(即运行应该失败的shouldReceive)。有什么想法吗?
您必须使用setUp函数,如下所示:
public function setUp()
{
$this->mock = Mockery::mock('myMockedClass');
}
您不应该覆盖PHPUnit_Framework_TestCase
的构造函数,请参阅我在#15051271和#17504870 上的回答
您还需要在tearDown
方法上调用Mockery::close()
。close方法为您的下一次测试清理嘲讽容器,并运行您设置的期望值。
public function tearDown()
{
Mockery::close();
}