PHPUnit test complex method that use drupal service within it I have a method of a class that returns me the list of fields that have been created outside of core Drupal. The method is:

/**
   * @param $contentType
   * @return array $fields
   */
  public function getContentTypeFields($contentType) {
    /** @var \Drupal\Core\Entity\EntityFieldManagerInterface $entityManager */
    $entityManager = \Drupal::service('entity_field.manager');
    $fields = array();

    if (!empty($contentType)) {
      $fields = array_filter(
        $entityManager-&gt;getFieldDefinitions('node', $contentType),
        function ($fieldDefinition) {
          return $fieldDefinition instanceof FieldConfigInterface;
        }
      );
    }

    return $fields;
  }


So you pass in a content_type name and the method will return an array of fields that have been created by us, so not the default Drupal fields. 

I cant figure out how to write a Unit Test for this method, can someone please help?
Resurrecting this.  The first method would be to include the EntityFieldManager as an argument to your function or constructor, so you can send a mock object in.

The second would be to look at some of the tests in core.  Specifically core/tests/Drupal/Tests/Core/Config/Entity/ConfigEntityStorageTest.php where the container is mocked and dependencies set up.    

$container = new ContainerBuilder();
$container-&gt;set('entity_type.manager', $entity_type_manager-&gt;reveal());
...
\Drupal::setContainer($container);