I have run into an issue that I believe is rooted in the implementation of anchor tags in Rhino. Although I am utilizing env.js, I suspect perhaps I am not configuring something correctly.
In particular, my issue occurs while I am attempting to write unit tests against code written for an angularjs application. When I include angular.js
(versions 1.2.1 to present), I get the following error:
TypeError: Cannot call method "charAt" of undefined
I am convinced the error is the result of this call to urlParsingNode.pathname
since a console.log
call reveals that the pathname
object is undefined.
I traced the instantiation of the urlParsingNode
to this line where we see that it is the result of a call to document.createElement("a");
Further down, we see that they set the href
attribute in this line in hopes that the created anchor tag will utilize the browser to correctly parse the URL.
I have to believe I'm not the first to attempt JS unit testing for angular via Rhino, but thus far I've not successfully Googled myself to a solution. Any tips will be greatly appreciated.
Found it and fixed it. The
pathname
getter/setter simply was undefined forHTMLAnchorElement
inenv.js
.I submitted a pull request, but unfortunately the project looks all but abandoned. I also couldn't figure out how to build it out to a single file. It appears perhaps someone has taken it upon themselves to break it apart into
require.js
modules. Not a battle worth fighting for my use case.So for anyone else who hits this issue, I have the code you need below. It belongs in the
HTMLAnchorElement.prototype
. In my copy ofenv.js
1.2, this prototype begins on line 8075. I added the following at line 8118.FYI, my particular issue is resolved with this pull request.