2014-01-09 64 views
2

我碰到an issue,我相信是紮根在犀牛錨定標籤的實施。儘管我正在使用env.js,但我懷疑可能是我沒有正確配置某些內容。錨定元素的路徑名返回undefined在犀牛與env.js

特別是,當我試圖針對爲angularjs應用程序編寫的代碼編寫單元測試時,出現了我的問題。當我包括angular.js(版本1.2.1至今),我收到以下錯誤:

TypeError: Cannot call method "charAt" of undefined

我相信錯誤是this callurlParsingNode.pathname結果因爲console.log來電顯示,pathname對象未定義。

我跟蹤urlParsingNodethis line的實例,我們看到它是document.createElement("a");呼叫的結果再往下,我們看到,他們在希望創建錨標記將利用瀏覽器設置href屬性,this line正確解析URL。

我不得不相信我不是第一個嘗試JS通過Rhino進行角度測試的單元測試,但到目前爲止,我還沒有成功將自己搜索到一個解決方案。任何提示將不勝感激。

+0

我看到了與Angular 1.2.7相同的錯誤,在同事的Angular 1.1.5項目中創建了我的項目結構。雖然我可能無意中引入了錯誤,因爲我的項目有些不同。希望有人在這裏回答... –

回答

2

找到並修復它。 pathname getter/setter對於HTMLAnchorElementenv.js中簡單地未定義。

我提交了a pull request,但不幸的是這個項目看起來幾乎被遺棄了。我也無法弄清楚如何將其構建到單個文件中。看起來也許有人已經把它分解成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)); 
}, 

僅供參考,我的具體問題與解決this pull request以下。