0

次のテストが失敗するのはなぜですか?

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': '"$%^&<>/\\:~@;#',
        'undef': undefined
    };
    deepEqual(queryString2Map(qs), map, "querystring converted to map");
});

queryString2Map によって返されるオブジェクトはテストのマップ オブジェクトと同一ですが、テストが失敗するのはなぜですか?

4

1 に答える 1

0

propEquals を使用してみてください。表示されていない親プロトタイプ オブジェクト間にいくつかの違いがある場合があります。

于 2014-06-02T00:28:16.937 に答える