2012-07-09 2 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

지도의 생성자를 설정하고 반환 된 객체를 null로 설정하면 생성자와 관련이 있다고 생각하므로이 테스트를 통과 할 수 있습니다 ... –

+0

코드는 Chrome의 최신 릴리스 버전에서 작동합니다. Firefox 및 IE9 (Windows 7). QUnit 버전 1.9.0을 사용했습니다. –

답변

0

propEquals를 사용해보세요. 표시되지 않는 상위 프로토 타입 개체간에 약간의 차이가있을 수 있습니다.

관련 문제