Я столкнулся с точно такой же проблемой с формой, позволяющей создавать пользователя вручную.Очень непонятно, как Beat обрабатывает сущности, но в конечном итоге использует класс \stdClass
, а не класс User
, который вы ожидаете:
Вот синтаксис кода и огурца, который мы использовали для достижения:
/**
* Create a user and register with Behat for cleanup.
*
* Let behat know we manually created a user so it can clean it up in its
* AfterScenario hook.
*
* @TODO: Is there no existing method for this step??
*
* @Then I have manually created :username
*/
public function manuallyCreatedUser($username) {
$user = user_load_by_name($username);
if ($user) {
$user_obj = (object) array(
'name' => $username,
'uid' => $user->id(),
'pass' => '',
'mail' => $user->getEmail(),
'role' => implode(",", $user->getRoles()),
);
$this->users[$username] = $user_obj;
}
}
Здесь происходит несколько вещей:
- Behat не использует объект
User
для отслеживания, а вместо этого \stdClass
со свойствами. - Это просто создает объект, который ожидает
- Пришел к этому решению, следуя по
RawDrupalContext
и в конечном итоге Drupal8::userDelete()