Действительно ли там кто-либо - аналог в JavaScript к __ ФАЙЛ __ переменная в PHP?

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

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

, Если Вы хотите протестировать трудные состояния ошибки, прибывающие из вспомогательного метода, можно пойти шаг вперед. Извлеките интерфейс из класса помощника, добавьте общедоступного метода get и метод set к исходному классу, чтобы ввести класс помощника (используемый через его интерфейс), и затем ввести ложную версию класса помощника в исходный класс, чтобы протестировать, как исходный класс отвечает на исключения от помощника. Этот подход также полезен, если Вы хотите протестировать исходный класс, также не тестируя класс помощника.

6
задан Sinan Ünür 30 July 2009 в 02:05
поделиться

4 ответа

error.fileName сообщит вам файл, из которого взят сценарий (не уверен, что он работает в каждом браузере; я тестировал его в Firefox и Opera)

var filename = (new Error).fileName;
1
ответ дан 17 December 2019 в 00:12
поделиться

Этот метод следует использовать только в том случае, если переменные определяют какой код JavaScript был загружен (например, при обработке запроса PHP, динамически создавая файл JS).

Если вы хотите передать информацию в код JavaScript, используйте функции или переменные в коде после его загрузки.

2
ответ дан 17 December 2019 в 00:12
поделиться

Ага. Дополнительный бонус: я конвертирую параметры строки запроса в более удобный хеш javascript.

HTML:

<script src="script.js?var1=something&var2=somethingelse" type="text/javascript"></script>

script.js :

var scriptSource = (function() {
    var scripts = document.getElementsByTagName('script');
    return scripts[scripts.length - 1].src
}());

var params = parseQueryString(scriptSource.split('?')[1]);

params.var1; // 'something'
params.var2; // 'somethingelse'

// Utility function to convert "a=b&c=d" into { a:'b', c:'d' }
function parseQueryString(queryString) {
    var params = {};
    if (queryString) {
        var keyValues = queryString.split('&');
        for (var i=0; i < keyValues.length; i++) {
            var pair = keyValues[i].split('=');
            params[pair[0]] = pair[1];
        }
    }
    return params;
}
4
ответ дан 17 December 2019 в 00:12
поделиться

Чтобы сделать что-то подобное, вам нужно будет использовать серверный язык для рендеринга JS.

Я бы не рекомендовал это.

0
ответ дан 17 December 2019 в 00:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: