2012-07-09 28 views
0

爲什麼以下測試失敗?qunit deepEqual測試在相同對象上失敗

function queryString2Map(queryString) { 
    var pairs = [], i, keyValuePair, key, value, map = {}; 
    if (queryString !== '') { 
     pairs = queryString.split('&'); 
     for (i = 0; i < pairs.length; i += 1) { 
      keyValuePair = pairs[i].split('='); 
      key = decodeURIComponent(keyValuePair[0]); 
      value = (keyValuePair.length > 1) ? decodeURIComponent(keyValuePair[1]) : undefined; 
      map[key] = value; 
     } 
    } 
    return map; 
} 


test("queryString2Map", 1, function() { 
    var qs = 'a=123&bob=%20a%20&symbols=%22%24%25%5E%26%3C%3E%2F%5C%3A~%40%3B%23&undef'; 
    var map = { 
     'a': '123', 
     'bob': ' a ', 
     'symbols': '"$%^&<>/\\:[email protected];#', 
     'undef': undefined 
    }; 
    deepEqual(queryString2Map(qs), map, "querystring converted to map"); 
}); 

queryString2Map返回的對象與測試中的地圖對象相同,爲什麼測試失敗?

+0

我可以得到這個測試通過,如果我設置地圖的構造函數和返回的對象爲空,所以我想它與建設者的事情... – 2012-07-09 11:00:04

+0

您的代碼適用於我的最新版本的Chrome, Firefox和IE9,在Windows 7上。我已經使用QUnit 1.9.0版。 – 2012-09-12 07:43:09

回答

0

嘗試使用propEquals,未顯示的父級原型對象之間可能存在一些差異。