回答: 根據SO以外的人的建議:將html放在視圖文件中,並將其注入到生產和testRunner頁面。問題解決了。下面JS測試亞軍html與生產html?
問題大膽
可以說我有,將一個元素50px的向左移動,當用戶點擊的方法。
負責這項功能是
function moveElemLeft($elem, iPxLeft){}
在我的測試腳本,我有本質:
test("test moves function left via css", 1, function(){
//get first elem in test fixture.
var $testFixture = $('#qunit-fixture').children().eq(0);
var beforeLeft = $testFixture.css('left');
moveElemLeft($testFixture, 50);
var afterLeft = $testFixture.css('left');
equal(beforeLeft-50, afterLeft);
});
在我的TestRunner HTML,我會像
<head><script href="test.js" /></head>
<body>
<div id="qunit-fixture">
<div id="testChild" class="absolute no-margins">
</div></div>
</body>
-----問題---- 我的函數在測試過程中運行正常的可能性很高,但在生產中不正確,因爲我在測試夾具中編寫的html顯然微不足道?使用與我的測試運行器html文件相同的生產HTML是不是更好?
但是要做到這一點,這將意味着在測試設置上,我將不得不將html從生產html文件複製到測試運行器文件中。這甚至有可能嗎?這裏最好的做法是什麼?
所以在哲學上,將html和js圖層分開處理。 JS測試測試js是否按預期工作,然後使用另一個測試套件(您建議使用selenium,或者[第二選擇]嵌入js測試代碼)以確保html能夠正確使用js。 –
差不多。一個機械化的瀏覽器可以測試整個網站 - HTML,CSS,JS,服務器端代碼等。 – Quentin
這聽起來像爭論只是使用硒來測試一切按預期工作,只打擾純js單元測試如果js是非常複雜的,並且你想要測試js邏輯按照你的意圖行事。 –