2012-01-09 64 views
3

設置單元測試(特別是使用Jasmine)的最佳方式是使用多個版本的jQuery進行測試。顯而易見的方法是讓全局測試頁面設置一系列iframe,但我想知道是否有方法在單個頁面中實現它。作爲一個天真的第一刺,我已經嘗試了以下,未能運行任何測試。針對jQuery的多個版本運行jasmine測試

有沒有人有任何想法如何修改,或更好的方法?

function testSuite() { 
    describe("jquery.flickbook", function() { 
      it("makes testing JavaScript awesome!", function() { 
      expect(true).toBeTrue(); 
      }); 
    }); 
} 

function testAllJquerys() { 
    var jqueryInclude = document.getElementById("jquery"), 
     head = document.getElementsByTagName("head")[0], 
     versions = "1.6,1.7.1,1.5.1".split(","); 


    function runSuite() { 
     describe("jquery-" + version, testSuite); 
     switchjQuery(); 
    } 

    function switchjQuery() { 
     version = versions.shift(); 
    // jQuery = $ = null; 
     jqueryInclude = document.createElement("script"); 
     jqueryInclude.type = "text/javascript"; 
     if (jqueryInclude.addEventListener){ 
      jqueryInclude.addEventListener('load', runSuite, false); 
     } else if (jqueryInclude.attachEvent){ 
      jqueryInclude.attachEvent('onload', runSuite); 
     } 
     head.appendChild(jqueryInclude); 
     jqueryInclude.src = "../../jquery/jquery-" + version + ".js"; 
    } 

    switchjQuery() 
} 

testAllJquerys(); 
+0

審議這個多了,我想我們需要的是異步運行茉莉測試套件的一些方法,所以我打算用waitsFor()方法 – wheresrhys 2012-01-09 10:54:37

+1

關於進一步反射實驗,我想的iframe解決方案是最好的,因爲它也允許對各種文檔類型進行測試,但是如果任何人仍然覺得像上面提到的那樣找到探針的解決方案,我仍然很想知道如果可能的話。 – wheresrhys 2012-01-09 11:35:16

回答

1

$版本jQuery庫可能做的伎倆,我還沒有嘗試過自己尚未雖然:

「優雅的方式來測試jQuery中的多個版本的插件 與QUnit完美作品(。可能還有其他測試框架)。「

https://github.com/protonet/jquery-versions

+0

這看起來很整齊,但已經閱讀了源代碼我不相信它支持具有一些異步行爲的測試 – wheresrhys 2012-01-23 11:06:21

+1

實際上,你可能是對的。將testready回調添加到testExecuter然後加載下一個jquery應該是相當簡單的。可以使用「QUnit.done」事件。 – 2012-03-15 07:36:55

相關問題