2013-07-12 3 views
0

Есть ли способ создать макет в конструкторе класса класса/функции setUp класса, чтобы макет был доступен для всех методов тестирования?Mockery - создание макета в конструкторе

Я попытался создать в конструкторе, как:

public class testMocks extends PHPUnit_Framework_TestCase { 

    protected $mock; 

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

... 

Но это не работает. Если первый тест проходит, то все тесты, которые утверждают на макет, проходят, даже если они должны потерпеть неудачу (т. Е. Запустит shouldReceive, который должен завершиться неудачей). Есть идеи?

ответ

0

Вы не должны переписать конструктор PHPUnit_Framework_TestCase, увидеть мой ответ на #15051271, а также #17504870

Вы также должны вызвать Mockery::close() по tearDown методы. Метод close очищает контейнер для издевательства для вашего следующего теста и выполняет ожидания, которые вы настроили.

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

Ну я попытался с помощью нАлАдкА, а также с помощью конструктора, но убедившись, что я вызвать родительский конструктор. Ни для меня не работает. – BIOS

+0

Смотрите мой отредактированный пост, я думаю, это может быть причиной вашей проблемы. –

+0

К сожалению, нет. Я использую tearDown, как ваш пример :(Попробуйте сами проверить его. Создайте макет класса в вашей настройке и запустите два теста, утверждая, что mock должен получить вызов метода. Сделайте первый проход и напишите второй тест, чтобы утверждение о макете должно потерпеть неудачу (т. е. ожидать, что метод будет называться 10 раз, но называть его только один раз). Для меня оба теста проходят. Если первый тест проходит, следующий тест проходит. Я бы подумал, что это довольно обычная вещь чтобы делать. – BIOS

1

Вы должны использовать нАлАдкА функцию, как это:

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

Вы действительно пробовали это? Это не сработало для меня. То же, что и при использовании конструктора. – BIOS

+0

Конечно. Оформить документацию по PHPUnit http://phpunit.de/manual/3.7/en/fixtures.html –

Смежные вопросы