diff --git a/pages/index/basicTest.test.js b/pages/index/basicTest.test.js index 1bd8b7a40febaea9a87c170685070c1efd7154f2..072c53edef1b5541baded6cc07d466938a4e914d 100644 --- a/pages/index/basicTest.test.js +++ b/pages/index/basicTest.test.js @@ -46,19 +46,27 @@ if (process.env.UNI_PROJECT_TYPE === '2.0' && process.env.uniTestPlatformInfo.to } if (process.env.UNI_PROJECT_TYPE === '2.0' && (process.env.uniTestPlatformInfo.toLocaleLowerCase().startsWith('ios') || process.env.uniTestPlatformInfo.startsWith('android'))) { - describe('testCallbackKeepAlive2.0', () => { + describe('testCallbackKeepAlive', () => { it("jest_testCallbackKeepAlive", async () => { const res = await page.callMethod('jest_testCallbackKeepAlive') expect(res).toEqual(true) }) + it("jest_testCallbackNonKeepAlive", async () => { + const res = await page.callMethod('jest_testCallbackNonKeepAlive') + expect(res).toEqual(4) + }) }) } if (process.env.UNI_PROJECT_TYPE === '1.0' && (process.env.uniTestPlatformInfo.toLocaleLowerCase().startsWith('ios') || process.env.uniTestPlatformInfo.startsWith('android'))) { - describe('testCallbackKeepAlive1.0', () => { + describe('testCallbackKeepAlive', () => { it("jest_testCallbackKeepAlive", async () => { const res = await page.callMethod('jest_testCallbackKeepAlive') expect(res).toEqual(20) }) + it("jest_testCallbackNonKeepAlive", async () => { + const res = await page.callMethod('jest_testCallbackNonKeepAlive') + expect(res).toEqual(4) + }) }) } diff --git a/pages/index/basicTest.uvue b/pages/index/basicTest.uvue index f01fbdd808f996b8dc40cd64641c94ed360a8c92..eac295714b271be9437e8c66ab22a618c71b3c24 100644 --- a/pages/index/basicTest.uvue +++ b/pages/index/basicTest.uvue @@ -25,7 +25,8 @@ import { runTests, Result } from '../../uni_modules/uts-tests' import { testTypeFromAppJs, Options } from '@/uni_modules/uts-ios-tests'; // #endif // #ifdef APP -import { onTest1, testKeepAlive, testKeepAliveOption, TestKeepAliveClass, TestKeepAliveOption, } from '@/uni_modules/uts-tests' +import { onTest1, testKeepAlive, testKeepAliveOption, createTest, TestKeepAliveClass, TestKeepAliveOption, } from '@/uni_modules/uts-tests' +import { testNonKeepAlive, testNonKeepAliveOption } from '@/uni_modules/uts-tests' // #endif export default { data() { @@ -33,7 +34,9 @@ export default { title: 'UTS基础语法', resultArray: [] as Result[], result: {} as UTSJSONObject, - names: [] as string[], + names: [] as string[], + keepAliveCount: 0, + nonKeepAliveCount: 0 } }, onReady() { @@ -51,7 +54,12 @@ export default { for (const key in resultMap) { this.names.push(key) this.resultArray.push(resultMap[key] as Result) - } + } + console.log('jest_testCallbackKeepAlive:' + this.jest_testCallbackKeepAlive()) + this.jest_testCallbackNonKeepAlive().then(res=>{ + console.log('jest_testCallbackNonKeepAlive:' + res) + }) + }, // #ifdef APP-IOS jest_testTypeFromAppJs() { @@ -163,7 +171,41 @@ export default { if (count < 2) { ret = false } + count = 0; + const testImpl = createTest() + testImpl.test((res) => { + count++; + console.log("TestImpl.test callback =====> ", res) + }) + if (count < 2) { + ret = false + } + this.keepAliveCount = count return ret + }, + jest_testCallbackNonKeepAlive(): Promise { + let count = 0 + const fn = (res:string) => { + count++; + console.log("testCallbackNonKeepAlive callback =====> ", res) + } + testNonKeepAlive(fn) + testNonKeepAlive(fn) + const options: TestKeepAliveOption = { + a:'a', + success(res:string){ + count++; + console.log("testCallbackNonKeepAliveOption callback =====> ", res) + } + } + testNonKeepAliveOption(options) + testNonKeepAliveOption(options) + return new Promise((resolve)=>{ + setTimeout(()=>{ + this.nonKeepAliveCount = count + resolve(count) + },50) + }) } // #endif }, diff --git a/pages/index/basicTest.vue b/pages/index/basicTest.vue index 1da1f20445e78111a7fb255f3e18db6225d74a87..4ae9af4a6ce43530fe7f2ea62c95fd5f0ac7e2d2 100644 --- a/pages/index/basicTest.vue +++ b/pages/index/basicTest.vue @@ -21,11 +21,14 @@ runTests } from '../../uni_modules/uts-tests' import { onTest1, testKeepAlive, testKeepAliveOption, createTest, TestKeepAliveClass } from '@/uni_modules/uts-tests' + import { testNonKeepAlive, testNonKeepAliveOption } from '@/uni_modules/uts-tests' export default { data() { return { - title: 'UTS基础语法', - result: {} + title: 'UTS基础语法', + result: {}, + keepAliveCount: 0, + nonKeepAliveCount: 0 } }, onReady() { @@ -36,6 +39,7 @@ this.result = runTests() console.log(this.result) console.log('jest_testCallbackKeepAlive:' + await this.jest_testCallbackKeepAlive()) + console.log('jest_testCallbackNonKeepAlive:' + await this.jest_testCallbackNonKeepAlive()) }, jest_testCallbackKeepAlive() { @@ -150,6 +154,40 @@ } return new Promise((resolve)=>{ setTimeout(()=>{ + this.keepAliveCount = count + resolve(count) + },30) + }) + }, + jest_testCallbackNonKeepAlive() { + let ret = true + let count = 0 + // 使用相同的回调函数多次传递调用,确保每次都正常 + const fn = (res) => { + count++; + console.log("testCallbackNonKeepAlive callback =====> ", res) + } + testNonKeepAlive(fn) + testNonKeepAlive(fn) + if (count < 2) { + ret = false + } + count = 0 + const options = { + a:'a', + success(res){ + count++; + console.log("testCallbackNonKeepAliveOption callback =====> ", res) + } + } + testNonKeepAliveOption(options) + testNonKeepAliveOption(options) + if (count < 2) { + ret = false + } + return new Promise((resolve)=>{ + setTimeout(()=>{ + this.nonKeepAliveCount = count resolve(count) },30) }) diff --git a/uni_modules/uts-tests/utssdk/index.uts b/uni_modules/uts-tests/utssdk/index.uts index 3a2ed7b6d6eba7c100fae04444b0933d4a4fa17d..1cbaadd983caf4729788504fb9ec04b2744da2e9 100644 --- a/uni_modules/uts-tests/utssdk/index.uts +++ b/uni_modules/uts-tests/utssdk/index.uts @@ -158,5 +158,18 @@ class TestImpl implements ITest { export function createTest() : ITest { return new TestImpl() } + +export function testNonKeepAlive(callback: (res: string) => void){ + setTimeout(()=>{ + callback("1") + },10) +} + +export function testNonKeepAliveOption(option: TestKeepAliveOption) { + console.log(option.a); + setTimeout(()=>{ + option.success?.("1") + },10) +} // #endif