Модульный тест: использование правильной терминологии для насмешек

После фундаментальных изменений в архитектуре системы моего проекта я попал в ситуацию, в которой мне нужно было бы создать «не настоящие«реализация для того, чтобы протестировать некоторые функции, которые раньше были общедоступными, например:

/**
* Display the template linked to the page.
*
* @param $newSmarty Smarty object to use to display the template.
*
* @param $parameters associative Array containing the values to pass to the template.
*       The key is the name of the variable in the template and the value is the value of the variable.
*
* @param $account child class in the AccountManager hierarchy
*
* @param $partialview String name of the partial view we are working on
*/
protected function displayPageTemplateSmarty(Smarty &$newSmarty, array $parameters = array(), AccountManager $account = NULL, string $partialview = "")
{
$this->smarty = $newSmarty;

if (is_file(
realpath(dirname(__FILE__)) . "/../../" .
Session::getInstance()->getCurrentDomain() . "/view/" . (
!empty($partialview) ?
"partial_view/" . $partialview :
str_replace(
array(".html", "/"),
array(".tpl", ""),
Session::getInstance()->getActivePage()
)
)
)) {

$this->smarty->assign(
'activeLanguage',
Session::getInstance()->getActiveLanguage()
);

$this->smarty->assign('domain', Session::getInstance()->getCurrentDomain());

$this->smarty->assign(
'languages',
Languagecontroller::$supportedLanguages
);

$this->smarty->assign(
'title',
Languagecontroller::getFieldTranslation('PAGE_TITLE', '')
);

$this->smarty->assign_by_ref('PageController', $this);

$htmlTagBuilder = HTMLTagBuilder::getInstance();

$languageController = LanguageController::getInstance();

$this->smarty->assign_by_ref('htmlTagBuilder', $htmlTagBuilder);
$this->smarty->assign_by_ref('languageController', $languageController);

if (!is_null($account)) {

$this->smarty->assign_by_ref('userAccount', $account);
}

if (!is_null($this->menuGenerator)) {

$this->smarty->assign_by_ref('menuGenerator', $this->menuGenerator);
}

foreach ($parameters as $key => $value) {

$this->smarty->assign($key, $value);
}

$this->smarty->display((!empty($partialview) ?
"partial_view/" . $partialview :
str_replace(
array(".html", "/"),
array(".tpl", ""),
Session::getInstance()->getActivePage()
)
));
}
}

В этом случае PageController Класс раньше вызывался непосредственно в контроллерах, но теперь это абстрактный класс, расширенный контроллерами, и мои модульные тесты больше не могут получить доступ к методу.

У меня также есть методы, подобные этому, в моем новом классе обертки сессий, которые могут использоваться только в очень специфическом контексте и для которых мне действительно нужно создать реализацию поддельной страницы, чтобы проверить их.

/**
* Add or update an entry to the page session array.
*
* Note: can only be updated by the PageController.
*
* @param $key String Key in the session array.
*   Will not be added if the key is not a string.
*
* @param $value The value to be added to the session array.
*
* @return Boolean
*/
public function updatePageSession(string $key, $value)
{
$trace = debug_backtrace();

$updated = false;

if (isset($trace[1]) and
isset($trace[1]['class']) and
$trace[1]['class'] === 'PageController'
) {

$this->pageSession[$key] = $value;

$updated = true;
}

return $updated;
}

Несмотря на то, что я прочитал несколько статей, мне все еще неясно, следует ли считать эти фальшивые уроки «огрызок«или»издеваться» (или даже «не настоящие«,»фиктивный» и так далее).

Мне действительно нужно использовать правильную терминологию, так как мой начальник ожидает, что я (в ближайшем будущем) передам большую часть моей рабочей нагрузки зарубежным разработчикам.

Как бы вы назвали эти ложные реализации классов, созданные исключительно для целей тестирования, чтобы быть понятными?

0

Решение

Джерард Месарос объясняет терминологию манекенов, пней, шпионов, издевательств и подделок Вот.

Вы можете найти примеры из мира PHP Вот.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]