@vuemap/amap-jsapi-loader
Version:
高德官网提供的地图JSAPI加载器,可以避免多种异步加载API的错误用法
287 lines (258 loc) • 9.87 kB
HTML
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
<title>JSAPI Loader</title>
<style>
html,
body,
#container {
height: 100%;
width: 100%;
margin: 0;
}
</style>
</head>
<body>
<div id="mocha"></div>
<link rel="stylesheet" href="./libs/mocha.min.css" />
<script src="./libs/chai.min.js"></script>
<script src="./libs/mocha.min.js"></script>
<script>
mocha.setup('bdd');
mocha.traceIgnores = ['mocha.min.js', 'chai.min.js'];
expect = chai.expect;
</script>
<div id="container" tabindex="0"></div>
<script src="../dist/index.js"></script>
<script>
// 请把 key 写在这里
const JSAPIKey = '';
const chai = window.chai;
const mocha = window.mocha;
mocha.setup({
timeout: '5000',
ui: 'bdd',
});
const expect = chai.expect;
describe('JSAPI', () => {
beforeEach(function () {
AMapLoader.reset()
});
it('Simple', (done) => {
AMapLoader.load({
key: JSAPIKey,//首次load必填
version: '2.0',
plugins: ['AMap.Scale'],
AMapUI: {
plugins: ['overlay/SimpleMarker']
}
}).then(() => {
expect(Boolean(window.AMap)).eq(true)
expect(Boolean(window.AMapUI)).eq(true)
expect(Boolean(window.AMapUI.SimpleMarker)).eq(true)
expect(Boolean(window.Loca)).eq(false)
done();
});
});
it('Request with AMapUI Loca', (done) => {
AMapLoader.load({
key: JSAPIKey,//首次load必填
version: '1.4.15',
plugins: ['AMap.Scale'],
AMapUI: {
plugins: ['overlay/SimpleMarker']
},
Loca: {
version: '1.3.2'
}
}).then(() => {
expect(Boolean(window.AMap)).eq(true)
expect(Boolean(window.AMapUI)).eq(true)
expect(Boolean(window.AMapUI.SimpleMarker)).eq(true)
expect(Boolean(window.Loca)).eq(true)
done();
});
});
it('fail with multi version', (done) => {
AMapLoader.load({
key: JSAPIKey,//首次load必填
version: '2.0',
}).then(() => {
done()
});
AMapLoader.load({
key: JSAPIKey,//首次load必填
version: '1.4.15',
}).then(() => {
done(Error('should not here'))
})
.catch(err => {
try {
expect(err).eq('不允许多个版本 JSAPI 混用')
} catch (error) {
done(error)
}
})
});
it('fail with multi key', (done) => {
AMapLoader.load({
key: JSAPIKey,//首次load必填
version: '2.0',
}).then(() => {
done()
});
AMapLoader.load({
key: 'asdfas',//首次load必填
}).then(() => {
done(Error('should not here'))
})
.catch(err => {
try {
expect(err).eq('多个不一致的 key')
} catch (error) {
done(error)
}
})
});
})
describe('AMapUI', () => {
beforeEach(function () {
AMapLoader.reset()
});
it('version', (done) => {
AMapLoader.load({
key: JSAPIKey,//首次load必填
version: '1.4.15',
AMapUI: {
version: '1.1',
plugins: ['misc/PathSimplifier']
}
}).then(() => {
expect(Boolean(window.AMap)).eq(true)
expect(Boolean(window.AMapUI)).eq(true)
expect(Boolean(window.AMapUI.PathSimplifier)).eq(true)
expect(Boolean(window.AMapUI.version.startsWith('1.1'))).eq(true)
done();
}).catch(done);
});
it('async', (done) => {
console.log(window.AMap);
AMapLoader.load({
key: JSAPIKey,//首次load必填
version: '1.4.15',
AMapUI: {
version: '1.0',
plugins: ['overlay/SimpleMarker']
}
}).then(() => {
AMapLoader.load({
AMapUI: {
plugins: ['overlay/SimpleInfoWindow']
}
}).then(() => {
expect(Boolean(window.AMap)).eq(true)
expect(Boolean(window.AMapUI.version.startsWith('1.0'))).eq(true)
expect(Boolean(window.AMapUI.SimpleMarker)).eq(true)
expect(Boolean(window.AMapUI.SimpleInfoWindow)).eq(true)
done()
});
}).catch(done);
})
});
describe('Loca', () => {
beforeEach(function () {
AMapLoader.reset()
});
it('version', (done) => {
AMapLoader.load({
key: JSAPIKey,//首次load必填
version: '1.4.15',
Loca: {
version: '1.3.1'
}
}).then(() => {
expect(Boolean(window.AMap)).eq(true)
expect(Boolean(window.Loca)).eq(true)
expect(window.Loca.version).eq('1.3.1')
done()
}).catch(done);
});
it('fail with jsapi2.0', (done) => {
AMapLoader.load({
key: JSAPIKey,//首次load必填
version: '2.0',
Loca: {
version: '1.3.1'
}
}).then(() => {
done(Error('should not here'))
}).catch(err => {
try {
expect(err).eq("Loca 暂不适配 JSAPI 2.0,请使用 1.4.15")
done()
} catch (error) {
done(error)
}
});
});
it('async', (done) => {
AMapLoader.load({
key: JSAPIKey,//首次load必填
version: '1.4.15',
Loca: {
version: '1.2.1'
}
}).then(() => {
expect(Boolean(window.AMap)).eq(true)
expect(Boolean(window.Loca)).eq(true)
expect(window.Loca.version).eq('1.2.1')
AMapLoader.load({
Loca: {
version: '1.2.1'
}
}).then(() => {
expect(Boolean(window.AMap)).eq(true)
expect(Boolean(window.Loca)).eq(true)
expect(window.Loca.version).eq('1.2.1')
done()
}).catch(done);
});
})
});
describe('Advance', () => {
beforeEach(function () {
AMapLoader.reset()
});
it('Multi', (done) => {
AMapLoader.load({ key: JSAPIKey, version: '1.4.15' }).then(() => {
expect(Boolean(window.AMap)).eq(true);
expect(window.AMap.v).eq('1.4.15');
expect(Boolean(window.AMapUI)).eq(false);
expect(Boolean(window.Loca)).eq(false);
AMapLoader.load({ AMapUI: {} }).then(() => {
expect(Boolean(window.AMap)).eq(true);
expect(window.AMap.v).eq('1.4.15');
expect(Boolean(window.AMapUI)).eq(true);
expect(window.AMapUI.version.startsWith('1.1')).eq(true);
expect(Boolean(window.Loca)).eq(false);
AMapLoader.load({ Loca: {} }).then(() => {
expect(Boolean(window.AMap)).eq(true);
expect(window.AMap.v).eq('1.4.15');
expect(Boolean(window.AMapUI)).eq(true);
expect(window.AMapUI.version.startsWith('1.1')).eq(true);
expect(Boolean(window.Loca)).eq(true);
expect(window.Loca.version).eq('1.3.2');
done()
})
})
}).catch(done)
})
})
mocha.run()
</script>
</script>
</body>
</html>