0

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

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

public class testMocks extends PHPUnit_Framework_TestCase {

    protected $mock;

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

...

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

4

2 回答 2

1

您必须使用setUp函数,如下所示:

public function setUp()    
{
    $this->mock = Mockery::mock('myMockedClass');
}
于 2013-07-13T06:03:50.373 回答
0

您不应该覆盖 的构造函数PHPUnit_Framework_TestCase,请参阅我在#15051271#17504870上的回答

您还需要调用Mockery::close()方法tearDown。close 方法为您的下一个测试清理模拟容器并运行您设置的期望。

public function tearDown()
{
    Mockery::close();
}
于 2013-07-12T14:51:35.543 回答