2014-10-20 26 views
0

我們使用Chutzpah測試適配器在Visual Studio中運行一些QUnit JavaScript測試。一切正常,直到我們最近修改了我們的api(最近被js文件測試過的),並在UserAgent http頭上添加了一些驗證。當我嘗試更新測試以更改/模擬用戶代理時,我意識到即使通過overriding the default browser property也無法直接進行測試。如何使用Chutzpah更改底層的Phantomjs對象設置?

經過幾天的清理,我終於找到了究竟發生了什麼。 Chutzpah正在爲要運行的測試文件創建一個phantomjs page對象。這是在位於Chutzpah adapter installation path的基本JavaScript文件(chutzpahRunner.js)上完成的。這些都在文件的最後一行,有效地開始測試:

... 
// Allows local files to make ajax calls to remote urls 
page.settings.localToRemoteUrlAccessEnabled = true; //(default false) 

// Stops all security (for example you can access content in other domain IFrames) 
page.settings.webSecurityEnabled = false; //(default true) 

page.open(testFile, pageOpenHandler); 
... 

Phatomjs支持在settings object的頁確定它改變了用戶代理頭。如果我編輯在我的機器上這chutzpahRunner.js文件,並手動設置的用戶代理那裏,就像這樣:

page.settings.userAgent = "MyCustomUserAgent"; 

我的測試開始重新工作。問題在於,這不在項目本身中,因此無法與團隊的其他成員共享。

是否可以更改由Chutzpah創建的phantomjs對象的屬性以運行測試?我想要從我自己的測試中,或從我可以嵌入到管道中的另一個腳本文件中更改它們。

+1

叉chutzpah並寫一個補丁。如果你做得很好,也許它會被合併回來。 – 2014-10-20 13:47:15

回答

1

如果在Chutzpah中沒有代碼更改,則無法在PhantomJS對象上設置這些屬性。請在https://github.com/mmanela/chutzpah處提出問題,要求提供此功能,然後派發/修補Chutzpah將其添加(或等待該項目的開發人員希望獲得此功能)。

更新: 我推了fix for this issue。一旦這個發佈,你可以在Chutzpah.json文件中使用以下內容:

{ 
    "userAgent": "myUserAgent" 
} 
+0

嘿,馬修。如果你仔細閱讀我的文章,你會注意到我已經嘗試了覆蓋方法,並且它不工作,不幸的是。至於你的第一個選擇,我會看看是否有一點時間將問題描述爲項目中的一個問題,但我一定無法自己修補問題,因爲我的經理不會批准我花了我的工作時間,我沒有在家工作的電腦。今天我做了最後一次嘗試,嘗試替換默認的基本模板html來生成修改後的測試工具,但是我終於意識到這是徒勞的... – julealgon 2014-10-20 23:23:10

+0

因爲我必須修改的文件直接傳遞給幻影可執行文件,我根本無法訪問。目前,我們已經決定刪除​​需要依賴User-Agent頭的測試,然後繼續。儘管在這個過程結束時我感到非常傷心,但是我認爲我花了很多時間來理解整個過程(我對JavaScript的瞭解很少,因爲它是一個讓我們的團隊設置這些東西的隊友測試),但最終沒有辦法做到。既然你說沒有代碼變更是不可能的,我就把它關閉了。 – julealgon 2014-10-20 23:29:09

+0

當我測試該代碼片段時,我放入了答案,它能夠更改userAgent屬性。我沒有測試它是否發送給服務器。你確認它沒有? – 2014-10-20 23:58:31

相關問題