function it_should_encode_password_when_attribute_changed(EncoderFactoryInterface $encoderFactory, User $user, PasswordEncoderInterface $encoder, LifecycleEventArgs $args, UnitOfWork $unitOfWork, EntityManager $entityManager, \Doctrine\ORM\Mapping\ClassMetadata $meta) { $args->getEntityManager()->willReturn($entityManager); $entityManager->getUnitOfWork()->willReturn($unitOfWork); $entityManager->getClassMetadata(Argument::any())->willReturn($meta); $unitOfWork->computeChangeSet(Argument::cetera())->willReturn(); $user->getPassword()->willReturn('pass'); $user->getSalt()->willReturn('salt'); $args->getEntity()->willReturn($user); $encoderFactory->getEncoder($user)->willReturn($encoder); $encoder->encodePassword(Argument::any(), Argument::any())->willReturn('encoded_pass'); $unitOfWork->getEntityChangeSet($user)->willReturn(['password' => 'password']); $user->setPassword('encoded_pass')->shouldBeCalled(); $this->postPersist($args); }