Путь элемента привязки возвращает неопределенный в Rhino с env.js
Я столкнулся с проблемой, которая, я считаю, коренится в реализации якорных тегов в Rhino. Хотя я использую env.js, я подозреваю, что, возможно, я что-то неправильно настраиваю.
В частности, моя проблема возникает, когда я пытаюсь написать модульные тесты для кода, написанного для приложения angularjs. Когда я включаю angular.js
(версии 1.2.1, чтобы представить), я получаю следующую ошибку:
TypeError: Cannot call method "charAt" of undefined
Я убежден, что ошибка является результатом этого звонка urlParsingNode.pathname
с console.log
вызов показывает, что pathname
объект не определен
Я проследил инстанцирование urlParsingNode
к этой строке, где мы видим, что это является результатом вызова document.createElement("a");
Далее мы видим, что они установили href
атрибут в этой строке в надежде, что созданный тег привязки будет использовать браузер для правильного анализа URL.
Я должен верить, что я не первый, кто пытался выполнить модульное тестирование JS для угловых через Rhino, но до сих пор я не смог найти подходящее решение. Любые советы будут с благодарностью.
1 ответ
Нашел и исправил. pathname
getter/setter просто не определен для HTMLAnchorElement
в env.js
,
Я отправил запрос на извлечение, но, к сожалению, проект выглядит почти заброшенным. Я также не мог понять, как собрать его в один файл. Похоже, возможно, кто-то взял это на себя, чтобы разбить его на require.js
модули. Не стоит сражаться за мой случай использования.
Так что для всех, кто сталкивается с этой проблемой, у меня есть код, который вам нужен ниже. Принадлежит в HTMLAnchorElement.prototype
, В моем экземпляре env.js
1.2, этот прототип начинается в строке 8075. Я добавил следующее в строке 8118.
get pathname() {
var uri = Envjs.urlsplit(this.href);
return uri.path;
},
set pathname(val) {
var uri = Envjs.urlsplit(this.href);
uri.path = val
this.href(uri.urlunsplit(uri));
},
К вашему сведению, моя конкретная проблема решена с помощью этого запроса.