我在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;
}
再次感谢。