uni-app UTS中,调用类里面的返回参数为promise类型的函数会报 UTS: targetFunction does not exists 错误
uni-app UTS中,调用类里面的返回参数为promise类型的函数会报 UTS: targetFunction does not exists 错误
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | 10.0.19045 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
HBuilderX类型:正式
HBuilderX版本号:4.29
手机系统:Android
手机系统版本号:Android 11
手机厂商:小米
手机机型:红米note9 pro
页面类型:vue
vue版本:vue2
打包方式:云端
项目创建方式:HBuilderX
操作步骤:
在类中定义两个实例方法
export class Demo {
constructor() { }
test1() : Promise<boolean> {
console.log('test1')
return Promise.resolve(true);
}
test2() : void {
console.log('test2')
}
}
export function test3() : Promise<boolean> {
console.log('test3')
return Promise.resolve(true);
}
在页面中调用:
import {
Demo,
test3
} from '@/uni_modules/promise-test'
let demo = null;
export default {
data() {
return {}
},
onLoad() {
demo = new Demo();
},
methods: {
handleTest1() {
demo.test1();
},
handleTest2() {
demo.test2();
},
handleTest3() {
test3();
}
}
}
预期结果:
17:22:07.555 test1 at uni_modules/promise-test/utssdk/app-android/index.uts:4 17:22:08.386 test2 at uni_modules/promise-test/utssdk/app-android/index.uts:8 17:22:08.840 test3 at uni_modules/promise-test/utssdk/app-android/index.uts:12
实际结果:
17:22:07.555 UTS: targetFunction does not exists
17:22:08.386 test2 at uni_modules/promise-test/utssdk/app-android/index.uts:8
17:22:08.840 test3 at uni_modules/promise-test/utssdk/app-android/index.uts:12
bug描述:
uts:调用类里面的返回参数为promise类型的函数会报 UTS: targetFunction does not exists 错误
单独导出的方法没这个问题,类中的实例方法存在这个问题
提供一个可以复现问题的最简示例,我确认一下
已上传,麻烦看一下
这是复现工程
我看看
我也遇到了这个问题,请问这个bug修复了吗?
回复 1***@qq.com: 还没发布,发布会更新ask状态
解决了吗???
UTS: targetFunction not exists
最新alpha版已修复
我也遇到了UTS: targetFunction not exists
promise换成any就没问题,但肯定是需要promise
尽快修复吧
提问者遇到的问题已修复。你遇到的问题 提交个示例吧 我看看
在 uni-app
UTS(Uni Test Suite)中,如果你遇到调用类里面的返回 Promise
类型的函数时报告 UTS: targetFunction does not exist
错误,这通常意味着 UTS 框架未能正确识别或调用该函数。这种情况可能是由于测试环境的配置问题、函数可见性问题或者测试代码编写不正确导致的。
以下是一个简单的示例,展示如何在 uni-app
中定义一个返回 Promise
的类方法,并编写相应的 UTS 测试代码。
1. 定义类和方法
首先,我们定义一个类 MyService
,其中包含一个返回 Promise
的方法 fetchData
:
// services/MyService.js
class MyService {
fetchData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Data fetched');
}, 1000);
});
}
}
module.exports = MyService;
2. 编写 UTS 测试代码
接下来,我们编写 UTS 测试代码来测试 fetchData
方法:
// test/MyService.test.js
const MyService = require('@/services/MyService');
describe('MyService Test', () => {
it('should fetch data successfully', async () => {
const service = new MyService();
const result = await service.fetchData();
expect(result).toBe('Data fetched');
});
});
3. 确保测试环境配置正确
确保你的 uni-app
项目已经正确配置了 UTS,并且测试脚本能够访问到你的项目文件。你可能需要在 package.json
中添加或更新测试脚本,例如:
"scripts": {
"test": "cross-env NODE_ENV=test jest --config test/jest.config.js"
}
同时,确保你的 jest.config.js
(或其他测试配置文件)正确设置了模块解析路径和转换规则,以便 Jest 能够理解你的项目结构。
4. 运行测试
最后,运行你的测试命令,例如:
npm test
如果一切配置正确,你应该能够看到测试通过,而不会遇到 UTS: targetFunction does not exist
错误。
这个示例展示了如何在 uni-app
中定义和测试返回 Promise
的类方法。如果仍然遇到问题,请检查你的测试环境配置、函数路径和可见性设置。