Как иметь функции void в phantomJs

Написание некоторых вспомогательных функций для использования phantomJs в качестве нашей среды тестирования, есть ли способ сделать «пустые» функции... или заставить phantomJs каким-то образом игнорировать возвращаемое значение?

var mod = require('./mymod.js');
mod.doStuff();

>> TypeError: 'undefined' is not a function

Для удобства, есть ли способ сделать это? или веская причина, почему я не должен?

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

если я делаю var ignore = mod.doStuff(); все в порядке. Но, как я уже сказал, для удобства...

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


person gcb    schedule 25.01.2013    source источник
comment
Я думаю, вы запутались - что вообще такое функция void? Здесь проблема в том, что объект mod не имеет свойства doStuff. Вы хотите молча пропустить вызовы функций для неопределенных объектов? Попробуйте if(mod.doStuff){mod.doStuff();}. Основной вопрос заключается в том, почему вы пытаетесь вызвать неопределенную функцию. Это не имеет ничего общего с «каким-то игнорированием возвращаемого значения».   -  person    schedule 25.01.2013
comment
у него есть метод. если я делаю var ignore = mod.doStuff(), все работает нормально. Извините, я не был ясен. позвольте мне обновить   -  person gcb    schedule 25.01.2013


Ответы (1)


Невозможно, чтобы mod.doStuff() выдавал ошибку, когда var ignore=mod.doStuff(); этого не делает. Есть еще одна проблема, которую, возможно, можно было бы отследить, если бы вы разместили весь свой код. Начните с основ: поставьте точку останова на рассматриваемой строке, а когда она там остановится, проверьте значение mod.doStuff и убедитесь, что это функция и т. д. и т. д. Чтобы сделать это с phantomJS, поищите в Google «phantomJS». удаленная отладка», в котором будет рассказано об опции --remote-debugger-port, поэтому вы можете открыть веб-браузер для http://localhost:port и выполнить отладку, используя стандартный подход.

person Community    schedule 25.01.2013
comment
я думаю, что это правильно, может быть что-то в моем коде. хотя я не получаю ошибок синтаксического анализатора в удаленной отладке... и jslint ничего мне не дает - person gcb; 25.01.2013
comment
у меня был экспорт вместо экспорта, написанный примерно через 100 строк после этой функции: / после исправления жалобы исчезли. - person gcb; 25.01.2013