2016-07-15 3 views
1

У меня есть контроллер в зависимости от UserManager. Это конструктор контроллера:Laravel 5.1 Ожидаемое mockery игнорируется при тестировании контроллера

public function __construct(UserManager $manager) { 
    $this->manager = $manager; 
} 

Это тестовый код.

public function test_something() { 
    $this->withoutMiddleware(); 

    // Setup Input. 
    $user = ['email' => '[email protected]', 'password' => 'pass', 'accessLevel' => 'admin']; 

    // Setup expectations. 
    $mock = \Mockery::mock("Users\UserManager")->shouldReceive('foo'); 

    // Bind to container... not sure whether this is needed. 
    $this->app->instance("Users\UserManager", $mock); 

    // Call action. 
    $this->call('POST', 'api/v1/temp/users', ['user' => $user]); 
} 

Я поставил ожидания на foo метод, который не существует, и поэтому не вызывается в любом месте, однако мой тест не подведет.

Почему?

ответ

2

Вы должны указать, сколько раз метод foo следует назвать:

->shouldReceive('foo')->once(); 

Убедитесь, что у вас также есть tearDown метод, где вы сбросить издевательство или он не будет работать:

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

Упс пропустил это! Спасибо тебе, друг. – brazorf

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