2015-06-15 3 views
1

Итак, прочитав документацию пару раз, я все еще смущен тем, как вы можете аутентифицироваться как пользователь для модульного тестирования в 5.1. Ранее в 4.2 вы можете использовать:Аутентифицированный пользовательский идентификатор Laravel 5.1

$user = new User(array('name' => 'John')); 
$this->be($user); 

В 5.1 пример, приведенный в:

$user = factory('App\User')->create(); 
$this->actingAs($user) 

Не завод просто возвращает пользователя? Если я пытаюсь использовать $user = new User(array('name' => 'John'));, я получаю сообщение об ошибке, потому что actingAs ожидает Authenticatable. Итак, как вы выполняете аутентификацию как существующий пользователь?

ответ

2

$user = new User(..); не дает вам существующего пользователя. Попробуйте $user = User::find(1), чтобы стать существующим участником. Если вы имели в виду тестирование в качестве несуществующего члена, вы можете просто включить признак DatabaseTransactions, который откатывает все, что было создано во время теста.

+1

Извините, что я просто приводил пример, в моем текущем тесте я использую User :: find, но я получаю ошибку 'obj is not Auteticatable'. –

+0

Вы уверены, что модель моделирует "Illuminate \ Contracts \ Auth \ Authenticatable"? Кроме того, я предполагаю, что вы используете полное имя класса и не получаете никаких ошибок при создании экземпляра, верно? Не могли бы вы сделать var_dump() в App \ User :: find (1)? –

+0

Ничего себе, я взглянул на модель User, и изменения в версии 4.2 -> 5 не были сохранены. Внедрение изменений снова, и работает единичный тест. –

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