Что происходит с объектами, передаваемыми между зависимыми тестами PHPUnit?

Это не столько вопрос, сколько попытка сэкономить кому-то еще час, который я только что потратил на PHPUnit.

Моя проблема заключалась в том, что мой фиктивный объект при использовании в зависимом тесте не возвращал ожидаемого значения. Кажется, что PHPUnit не сохраняет один и тот же объект между зависимыми тестами, хотя синтаксис делает его похожим на него.

Кто-нибудь знает, почему PHPUnit делает это? Это ошибка? Подобные вещи в PHPUnit делают его очень неудобным в использовании.

<?php 
class PhpUnitTest
extends PHPUnit_Framework_TestCase
{
private $mock;

public function setUp()
{
    $this->mock = $this->getMock('stdClass', array('getFoo'));

    $this->mock->expects( $this->any() )
        ->method('getFoo')
        ->will( $this->returnValue( 'foo' ) );
}

public function testMockReturnValueTwice()
{
    $this->assertEquals('foo', $this->mock->getFoo());
    $this->assertEquals('foo', $this->mock->getFoo());

    return $this->mock;
}

/**
 * @depends testMockReturnValueTwice
 */
public function testMockReturnValueInDependentTest($mock)
{
    /* I would expect this next line to work, but it doesn't! */
    //$this->assertEquals('foo', $mock->getFoo());

    /* Instead, the $mock parameter is not the same object as
     * generated by the previous test! */
    $this->assertNull( $mock->getFoo() );
}

}
6
задан tshepang 1 May 2014 в 13:47
поделиться