无法使用存根的方法“ config”

时间:2019-12-03 14:59:27

标签: php drupal phpunit

我在Drupal中具有此功能,我正在尝试进行单元测试:

private function retrieveRemoteDownloadsHistory() {
  $this->downloadsHistory = explode(
    PHP_EOL,
    file_get_contents(
      $this->config('itrs_bintray_statistics.settings')
        ->get('old_production_downloads_endpoint')));
}

我这样嘲笑配置特征:

$config = $this->getMockForTrait(ConfigFormBaseTrait::class);

但是然后当我在ConfigFormBaseTrait中尝试这样的config方法时:

$config->expects($this->any())->method('config')->will($this->returnValue($config));

我收到以下错误:

  

尝试配置无法配置的方法“ config”,因为它不存在,尚未指定,是最终的还是静态的

但是config方法似乎都不是。你能找到我可以解决的方法吗?谢谢。

ADDENDA:

我完全发布了config方法:

protected function config($name) {
    /** @var \Drupal\Core\Config\ConfigFactoryInterface $config_factory */
    if (method_exists($this, 'configFactory')) {
      $config_factory = $this->configFactory();
    }
    elseif (property_exists($this, 'configFactory')) {
      $config_factory = $this->configFactory;
    }
    if (!isset($config_factory) || !($config_factory instanceof ConfigFactoryInterface)) {
      throw new \LogicException('No config factory available for ConfigFormBaseTrait');
    }
    if (in_array($name, $this->getEditableConfigNames())) {
      // Get a mutable object from the factory.
      $config = $config_factory->getEditable($name);
    }
    else {
      $config = $config_factory->get($name);
    }
    return $config;
  }

当尝试对另一个特质的方法进行公开时,我得到的警告非常相同。这是一个:

实例化

use Drupal\Core\Database\Query\InsertTrait;

在设置功能中:

$insertTrait = $this->getMockForTrait(InsertTrait::class);

我无法了解的方法:

public function fields(array $fields, array $values = []) {
    if (empty($this->insertFields)) {
      if (empty($values)) {
        if (!is_numeric(key($fields))) {
          $values = array_values($fields);
          $fields = array_keys($fields);
        }
      }
      $this->insertFields = $fields;
      if (!empty($values)) {
        $this->insertValues[] = $values;
      }
    }

    return $this;
  }

再次感谢。

0 个答案:

没有答案