M1: 桥引擎单测跑通,桥核心覆盖率 87.3%(T-M1-08 完成,R-18 处置)
- 修复 2 个测试用例(漏先触发 flushMessageQueue 注册 _fetchQueue 回调) - 补 set_default/remove、FakeWebController、send 用例,共 15 用例全通过 - 桥核心覆盖率 87.3%(MessageCodec/Message 100%、BridgeController 83%、 HandlerRegistry 88%)≥80% 达标;Adapter/BridgeJsLoader 系统耦合由 V1 真机覆盖 - scripts/test.sh:本地单测 + 覆盖率运行脚本(devecocli 无 test,用 DevEco hvigorw + 强制 DEVECO_SDK_HOME 指向自带 sdk);ci.sh 集成单测(SKIP_TESTS=1 可跳过) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
38307e8d71
commit
159dcf2687
@@ -67,6 +67,34 @@ export default function bridgeTest() {
|
||||
r.default()('x', (d) => { resp = d; });
|
||||
expect(resp).assertEqual('');
|
||||
});
|
||||
|
||||
it('set_default_and_remove', 0, () => {
|
||||
const r = new HandlerRegistry();
|
||||
let v = '';
|
||||
r.setDefault((d, cb) => cb('D:' + d));
|
||||
r.default()('x', (s) => { v = s; });
|
||||
expect(v).assertEqual('D:x');
|
||||
r.put('a', (_d, cb) => cb('A'));
|
||||
expect(r.size()).assertEqual(1);
|
||||
r.remove('a');
|
||||
expect(r.has('a')).assertFalse();
|
||||
});
|
||||
});
|
||||
|
||||
describe('FakeWebController', () => {
|
||||
it('records_and_clears', 0, () => {
|
||||
const f = new FakeWebController();
|
||||
expect(f.lastScript() === undefined).assertTrue();
|
||||
f.runJavaScript('s1');
|
||||
f.loadUrl('u1');
|
||||
expect(f.scripts.length).assertEqual(1);
|
||||
expect(f.loadedUrls.length).assertEqual(1);
|
||||
expect(f.lastScript()).assertEqual('s1');
|
||||
f.dispose();
|
||||
f.clear();
|
||||
expect(f.scripts.length).assertEqual(0);
|
||||
expect(f.lastScript() === undefined).assertTrue();
|
||||
});
|
||||
});
|
||||
|
||||
describe('BridgeController', () => {
|
||||
@@ -104,6 +132,16 @@ export default function bridgeTest() {
|
||||
expect(last.includes('getlocationinfo')).assertTrue();
|
||||
});
|
||||
|
||||
it('send_no_handlerName', 0, () => {
|
||||
const fake = new FakeWebController();
|
||||
const bridge = new BridgeController(fake);
|
||||
bridge.onPageEnd();
|
||||
bridge.send('hello');
|
||||
const last = fake.lastScript() ?? '';
|
||||
expect(last.includes('_handleMessageFromNative')).assertTrue();
|
||||
expect(last.includes('hello')).assertTrue();
|
||||
});
|
||||
|
||||
it('startup_queue_flush_after_onPageEnd', 0, () => {
|
||||
const fake = new FakeWebController();
|
||||
const bridge = new BridgeController(fake);
|
||||
@@ -128,6 +166,8 @@ export default function bridgeTest() {
|
||||
const m = sent.match(/JAVA_CB_[0-9]+_[0-9]+/);
|
||||
expect(m !== null).assertTrue();
|
||||
const cbId = m![0];
|
||||
// 先触发 flushMessageQueue 注册 _fetchQueue 回调,回执经队列机制路由
|
||||
bridge.onLoadIntercept('yy://__queue__/');
|
||||
bridge.onLoadIntercept('yy://return/_fetchQueue/' +
|
||||
encodeURIComponent('[{"responseId":"' + cbId + '","responseData":"1700"}]'));
|
||||
expect(resp).assertEqual('1700');
|
||||
@@ -137,6 +177,8 @@ export default function bridgeTest() {
|
||||
const fake = new FakeWebController();
|
||||
const bridge = new BridgeController(fake);
|
||||
bridge.onPageEnd();
|
||||
// 先触发 flushMessageQueue 注册 _fetchQueue 回调
|
||||
bridge.onLoadIntercept('yy://__queue__/');
|
||||
// 未注册的 handler 名 → 默认兜底,不抛错
|
||||
bridge.onLoadIntercept('yy://return/_fetchQueue/' +
|
||||
encodeURIComponent('[{"handlerName":"finsh","data":"","callbackId":"cb9"}]'));
|
||||
|
||||
Reference in New Issue
Block a user