Mockery - 在构造函数中创建一个mock

时间:2013-07-12 09:26:55

标签: unit-testing mocking phpunit mockery

有没有办法在测试类构造函数/类setUp函数中创建一个mock,以便mock可用于所有测试方法?

我尝试在构造函数中创建:

public class testMocks extends PHPUnit_Framework_TestCase {

    protected $mock;

    public function __construct()
    {
        $this->mock = Mockery::mock('myMockedClass');
    }

...

但这不起作用。如果第一个测试通过,那么在模拟上断言的所有测试都会通过,即使它们应该失败(即运行应该失败的shouldReceive)。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您必须使用 setUp 功能,如下所示:

public function setUp()    
{
    $this->mock = Mockery::mock('myMockedClass');
}

答案 1 :(得分:0)

您不应覆盖PHPUnit_Framework_TestCase的构造函数,请参阅#15051271上的答案以及#17504870

您还需要在Mockery::close()方法上致电tearDown。 close方法清理mockry容器以进行下一次测试,并运行您已设置的期望。

public function tearDown()
{
    Mockery::close();
}