Сбой тестирования модуля пакета Laravel для вспомогательной функции в файле конфигурации (вызов неопределенного метода base_path ())

Итак, я пытаюсь обновить пакет, который я использовал для Laravel 4, чтобы он был совместим с Laravel 5, так как исходный репозиторий некоторое время не обновлялся, и ему нужно было несколько настроек для работы с Laravel. 5.

Я сделал необходимые изменения и создал тянуть запрос в исходный репозиторий.

Я заметил, что юнит-тесты провалились, поэтому я попытался покопаться в нем. До сих пор я ничего не делал с PHPUnit, поэтому решил, что это будет хорошим опытом обучения.

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

Кажется, у меня проблема в том, что одна из вспомогательных функций Laravel используется в конфигурационном файле пакета по умолчанию: base_path() не определено

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

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

Файл, который вызывает проблему, является конфигурацией по умолчанию, расположенной в polyglot / config / polyglot.php

return [

// Whether to swap out the facades (Router, Lang, etc) with
// Polyglot's, disable this if you need other packages to do the same
// Can specify an array of facades to swap, eg. ['Lang', 'URL']
'facades' => true,

// Locales
////////////////////////////////////////////////////////////////////

// The default locale if none is provided in the URL
// Leave empty to force the use of locales prefixes in URLs
'default' => 'en',

// The fallback locale for translations
// If null, the default locale is used
'fallback' => null,

// The available locales
'locales' => [],

// Gettext
////////////////////////////////////////////////////////////////////

// The domain of your translations, for gettext use
'domain' => 'messages',

// Where the PO/MO files reside

'folder' => base_path('resources/lang'),
// Format of the compiled files
'file' => '{domain}.po',

// Database
////////////////////////////////////////////////////////////////////

// The pattern Polyglot should follow to find the Lang classes
// Examples are "Lang\{model}", "{model}Lang", where {model}
// will be replaced by the model's name
'model_pattern' => '{model}Lang',

];

Итак, что типично делать в этой ситуации? Определить функцию вручную? Включить вспомогательный файл как-нибудь? Или отказаться от использования функции и пойти с решением, используя основные ссылки на каталог php? Любая помощь будет оценена.

1

Решение

base_path стандартный помощник Laravel Это доступно каждый раз, когда Laravel загружается. Правильный подход — загрузка Laravel в ваших тестах через TestCase Базовый класс включен в Laravel. Обратитесь к официальному руководство по тестированию а также этот Ларакаст.

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

0

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector